dbf-mirador 4.3.0-testing1 → 4.3.0-testing3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/AudioViewer-tRH73pbt.js +40 -0
  2. package/dist/AudioViewer-tRH73pbt.js.map +1 -0
  3. package/dist/CommentSharp-BJ6oQAe3.js +322 -0
  4. package/dist/CommentSharp-BJ6oQAe3.js.map +1 -0
  5. package/dist/FailedImageContext-BhA0TpVp.js +339 -0
  6. package/dist/FailedImageContext-BhA0TpVp.js.map +1 -0
  7. package/dist/GalleryView-rCx0Q4f3.js +176 -0
  8. package/dist/GalleryView-rCx0Q4f3.js.map +1 -0
  9. package/dist/OpenSeadragonViewer-B_KV5sbU.js +7889 -0
  10. package/dist/OpenSeadragonViewer-B_KV5sbU.js.map +1 -0
  11. package/dist/PluginHook-DWFCXIIp.js +54 -0
  12. package/dist/PluginHook-DWFCXIIp.js.map +1 -0
  13. package/dist/SelectCollection-BK9ZDkK3.js +67 -0
  14. package/dist/SelectCollection-BK9ZDkK3.js.map +1 -0
  15. package/dist/TextViewer-D_1qzQE4.js +38 -0
  16. package/dist/TextViewer-D_1qzQE4.js.map +1 -0
  17. package/dist/VideoViewer-DzNjgLWE.js +42 -0
  18. package/dist/VideoViewer-DzNjgLWE.js.map +1 -0
  19. package/dist/WindowCanvasNavigationControls-D2uLtL_A.js +242 -0
  20. package/dist/WindowCanvasNavigationControls-D2uLtL_A.js.map +1 -0
  21. package/dist/WindowViewer-DMNeTH1_.js +27 -0
  22. package/dist/WindowViewer-DMNeTH1_.js.map +1 -0
  23. package/dist/WorkspaceArea-CzKnpSim.js +22222 -0
  24. package/dist/WorkspaceArea-CzKnpSim.js.map +1 -0
  25. package/dist/action-types-DjIbTE-A.js +74 -0
  26. package/dist/action-types-DjIbTE-A.js.map +1 -0
  27. package/dist/canvas-2ACcnS9Y.js +41 -0
  28. package/dist/canvas-2ACcnS9Y.js.map +1 -0
  29. package/dist/canvases-DTR37lo-.js +3270 -0
  30. package/dist/canvases-DTR37lo-.js.map +1 -0
  31. package/dist/createSvgIcon-Cwt8YPfm.js +2 -0
  32. package/dist/getters-B4oepJRC.js +2043 -0
  33. package/dist/getters-B4oepJRC.js.map +1 -0
  34. package/dist/index.module-CgUBfaXx.js +403 -0
  35. package/dist/index.module-CgUBfaXx.js.map +1 -0
  36. package/dist/mirador.es.js +9222 -0
  37. package/dist/mirador.es.js.map +1 -0
  38. package/dist/mirador.min.js +335 -0
  39. package/dist/mirador.min.js.map +1 -0
  40. package/dist/react-error-boundary.esm-ByHqCaxk.js +67 -0
  41. package/dist/react-error-boundary.esm-ByHqCaxk.js.map +1 -0
  42. package/dist/visuallyHidden-C4mhQkB0.js +98 -0
  43. package/dist/visuallyHidden-C4mhQkB0.js.map +1 -0
  44. package/dist/window-COQOIAli.js +138 -0
  45. package/dist/window-COQOIAli.js.map +1 -0
  46. package/package.json +3 -2
  47. package/src/components/AnnotationsOverlay.jsx +21 -6
  48. package/src/lib/AnnotationItem.js +18 -0
  49. package/src/lib/AnnotationResource.js +14 -0
  50. package/src/lib/CanvasAnnotationDisplay.js +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mirador.es.js","names":["MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","abs","from","assign","hash","charat","trim","match","replace","indexof","substr","strlen","sizeof","append","combine","line","column","length","position","character","characters","node","copy","assign","char","prev","charat","next","peek","caret","slice","substr","token","alloc","strlen","dealloc","delimit","trim","delimiter","whitespace","escaping","commenter","from","identifier","compile","dealloc","parse","alloc","next","charat","delimit","from","whitespace","escaping","caret","peek","comment","commenter","token","strlen","substr","replace","declaration","ruleset","append","prev","identifier","sizeof","abs","trim","node","RULESET","COMMENT","char","DECLARATION","prefix","hash","WEBKIT","MOZ","MS","charat","replace","match","substr","indexof","strlen","serialize","DECLARATION","prefix","KEYFRAMES","serialize","copy","replace","WEBKIT","RULESET","combine","match","MOZ","MS","IMPORT","DECLARATION","COMMENT","RULESET","serialize","strlen","compile","copy","copy","isString","noop","CANCEL","string","array","symbol","channel","CANCEL","is.array","CANCELLED","is.pattern","is.notUndef","is.multicast","is.channel","is.undef","is.func","is.string","is.string","is.array","is.stringableFunc","is.func","is.symbol","CANCEL","is.iterator","is.promise","is.notUndef","is.undef","CANCEL$1","iterator","compose","is.channel","is.stringableFunc","is.func"],"sources":["../node_modules/lodash/_assignValue.js","../node_modules/lodash/_baseSet.js","../node_modules/lodash/_baseUpdate.js","../node_modules/lodash/_castFunction.js","../node_modules/lodash/update.js","../src/state/selectors/index.js","../src/state/actions/infoResponse.js","../src/state/actions/index.js","../src/extend/pluginMapping.js","../src/extend/PluginProvider.jsx","../node_modules/cssjanus/src/cssjanus.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/stylis/src/Prefixer.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Middleware.js","../node_modules/stylis-plugin-rtl/dist/stylis-rtl.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/@emotion/cache/node_modules/stylis/src/Enum.js","../node_modules/@emotion/cache/node_modules/stylis/src/Utility.js","../node_modules/@emotion/cache/node_modules/stylis/src/Tokenizer.js","../node_modules/@emotion/cache/node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/node_modules/stylis/src/Serializer.js","../node_modules/@emotion/cache/node_modules/stylis/src/Middleware.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/i18next/dist/esm/i18next.js","../src/locales/ar/translation.json","../src/locales/de/translation.json","../src/locales/en/translation.json","../src/locales/et/translation.json","../src/locales/fa/translation.json","../src/locales/zhCn/translation.json","../src/locales/zhTw/translation.json","../src/locales/fr/translation.json","../src/locales/hr/translation.json","../src/locales/ja/translation.json","../src/locales/kr/translation.json","../src/locales/nl/translation.json","../src/locales/pl/translation.json","../src/locales/ptBr/translation.json","../src/locales/it/translation.json","../src/locales/sr/translation.json","../src/locales/sv/translation.json","../src/locales/lt/translation.json","../src/locales/vi/translation.json","../src/locales/bg/translation.json","../src/locales/nbNo/translation.json","../src/locales/hu/translation.json","../src/locales/ta/translation.json","../src/i18n.js","../src/contexts/FailedImageProvider.jsx","../src/lib/FullScreenHandle.jsx","../src/components/AppProviders.jsx","../src/containers/AppProviders.js","../src/components/App.jsx","../node_modules/lodash/isString.js","../node_modules/lodash/isNull.js","../node_modules/lodash/_baseValues.js","../node_modules/lodash/values.js","../src/extend/pluginValidation.js","../src/extend/pluginPreprocessing.js","../node_modules/redux-thunk/dist/redux-thunk.mjs","../node_modules/@redux-saga/symbols/dist/redux-saga-symbols.esm.js","../node_modules/@redux-saga/is/dist/redux-saga-is.esm.js","../node_modules/@redux-saga/delay-p/dist/redux-saga-delay-p.esm.js","../node_modules/@redux-saga/core/dist/io-dec07f91.esm.js","../node_modules/@redux-saga/deferred/dist/redux-saga-deferred.esm.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@redux-saga/core/dist/redux-saga-core.esm.js","../node_modules/@redux-devtools/extension/lib/esm/index.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/isMap.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/isSet.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/last.js","../node_modules/lodash/_parent.js","../node_modules/lodash/_baseUnset.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/_customOmitClone.js","../node_modules/lodash/flatten.js","../node_modules/lodash/_flatRest.js","../node_modules/lodash/omit.js","../src/state/reducers/accessTokens.js","../node_modules/lodash/fp/_mapping.js","../node_modules/lodash/fp/placeholder.js","../node_modules/lodash/fp/_baseConvert.js","../node_modules/lodash/ary.js","../node_modules/lodash/clone.js","../node_modules/lodash/isError.js","../node_modules/lodash/isWeakMap.js","../node_modules/lodash/iteratee.js","../node_modules/lodash/rearg.js","../node_modules/lodash/toPath.js","../node_modules/lodash/fp/_util.js","../node_modules/lodash/fp/convert.js","../node_modules/lodash/set.js","../node_modules/lodash/fp/set.js","../node_modules/lodash/fp/update.js","../src/state/reducers/companionWindows.js","../src/state/reducers/errors.js","../src/state/reducers/workspace.js","../src/state/reducers/windows.js","../src/state/reducers/manifests.js","../src/state/reducers/infoResponses.js","../src/state/reducers/config.js","../src/state/reducers/viewers.js","../src/state/reducers/annotations.js","../src/state/reducers/auth.js","../src/state/reducers/elasticLayout.js","../src/state/reducers/search.js","../src/state/reducers/layers.js","../src/state/reducers/catalog.js","../src/state/reducers/index.js","../src/state/reducers/rootReducer.js","../node_modules/@redux-saga/core/effects/dist/redux-saga-core-effects.esm.js","../src/state/sagas/iiif.js","../src/state/sagas/windows.js","../src/state/sagas/app.js","../src/state/sagas/annotations.js","../src/state/sagas/auth.js","../src/state/sagas/index.js","../src/state/createStore.js","../src/state/createPluggableStore.js","../src/lib/MiradorViewer.jsx","../src/init.js","../src/state/index.js","../src/index.js"],"sourcesContent":["var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet');\n\n/**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n}\n\nmodule.exports = baseUpdate;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var baseUpdate = require('./_baseUpdate'),\n castFunction = require('./_castFunction');\n\n/**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\nfunction update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n}\n\nmodule.exports = update;\n","export * from './annotations';\nexport * from './canvases';\nexport * from './companionWindows';\nexport * from './config';\nexport * from './getters';\nexport * from './manifests';\nexport * from './windows';\nexport * from './workspace';\nexport * from './searches';\nexport * from './ranges';\nexport * from './layers';\nexport * from './sequences';\nexport * from './auth';\nexport * from './utils';\nexport * from './viewer';\nexport * from './thumbnails';\nexport * from './wrappers';\n","import { getIiifResourceImageService } from '../../lib/iiif';\nimport ActionTypes from './action-types';\n\n/**\n * requestInfoResponse - action creator\n *\n * @param {String} infoId\n * @memberof ActionCreators\n */\nexport function requestInfoResponse(infoId, imageResource, windowId) {\n return {\n imageResource,\n infoId,\n type: ActionTypes.REQUEST_INFO_RESPONSE,\n windowId,\n };\n}\n\n/**\n * receiveInfoResponse - action creator\n *\n * @param {String} infoId\n * @param {Object} manifestJson\n * @memberof ActionCreators\n */\nexport function receiveInfoResponse(infoId, infoJson, ok, tokenServiceId) {\n return {\n infoId,\n infoJson,\n ok,\n tokenServiceId,\n type: ActionTypes.RECEIVE_INFO_RESPONSE,\n };\n}\n\n/**\n * receiveDegradedInfoResponse - action creator\n *\n * @param {String} infoId\n * @param {Object} manifestJson\n * @memberof ActionCreators\n */\nexport function receiveDegradedInfoResponse(infoId, infoJson, ok, tokenServiceId, windowId) {\n return {\n infoId,\n infoJson,\n ok,\n tokenServiceId,\n type: ActionTypes.RECEIVE_DEGRADED_INFO_RESPONSE,\n windowId,\n };\n}\n\n/**\n * receiveInfoResponseFailure - action creator\n *\n * @param {String} infoId\n * @param {String} error\n * @memberof ActionCreators\n */\nexport function receiveInfoResponseFailure(infoId, error, tokenServiceId) {\n return {\n error,\n infoId,\n tokenServiceId,\n type: ActionTypes.RECEIVE_INFO_RESPONSE_FAILURE,\n };\n}\n\n/**\n * fetchInfoResponse - action creator\n *\n * @param {String} infoId\n * @memberof ActionCreators\n */\nexport function fetchInfoResponse({ imageId, imageResource, windowId }) {\n const imageService = imageResource && getIiifResourceImageService(imageResource);\n const infoId = imageId || imageService.id;\n return requestInfoResponse(infoId, imageService, windowId);\n}\n\n/**\n * removeInfoResponse - action creator\n *\n * @param {String} infoId\n * @memberof ActionCreators\n */\nexport function removeInfoResponse(infoId) {\n return { infoId, type: ActionTypes.REMOVE_INFO_RESPONSE };\n}\n","/**\n * Action Creators for Mirador\n * @namespace ActionCreators\n */\nexport * from './companionWindow';\nexport * from './config';\nexport * from './errors';\nexport * from './window';\nexport * from './manifest';\nexport * from './infoResponse';\nexport * from './canvas';\nexport * from './workspace';\nexport * from './annotation';\nexport * from './auth';\nexport * from './elasticLayout';\nexport * from './search';\nexport * from './layers';\nexport * from './catalog';\nexport { default as ActionTypes } from './action-types';\n","import update from 'lodash/update';\nimport { connect } from 'react-redux';\nimport CompanionWindowRegistry from '../lib/CompanionWindowRegistry';\n\n/**\n * Returns a mapping from targets to plugins and modes\n *\n * @param {Array} plugins\n * @return {Object} - looks like:\n *\n * {\n * 'WorkspacePanel': {\n * wrap: [plugin3, ...],\n * add: [plugin4, ...],\n * },\n * ...\n * }\n */\nexport function createTargetToPluginMapping(plugins) {\n return plugins.reduce((map, plugin) => update(map, [plugin.target, plugin.mode], (x) => [...(x || []), plugin]), {});\n}\n\n/** */\nexport function connectPluginsToStore(plugins) {\n return plugins.map((plugin) => ({ ...plugin, component: connectPluginComponent(plugin) }));\n}\n\n/** */\nexport function addPluginsToCompanionWindowsRegistry(plugins) {\n plugins\n .filter((p) => p.companionWindowKey)\n .forEach((plugin) => {\n CompanionWindowRegistry[plugin.companionWindowKey] = plugin.component;\n });\n\n return CompanionWindowRegistry;\n}\n\n/** Connect plugin component to state */\nfunction connectPluginComponent(plugin) {\n if (!plugin.mapStateToProps && !plugin.mapDispatchToProps) return plugin.component;\n\n return connect(plugin.mapStateToProps, plugin.mapDispatchToProps, ...(plugin.connectOptions || []))(plugin.component);\n}\n","import { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport PluginContext from './PluginContext';\nimport { connectPluginsToStore, createTargetToPluginMapping, addPluginsToCompanionWindowsRegistry } from './pluginMapping';\n\n/** */\nexport default function PluginProvider({ plugins = [], children = null }) {\n const [pluginMap, setPluginMap] = useState({});\n\n useEffect(() => {\n const connectedPlugins = connectPluginsToStore(plugins);\n addPluginsToCompanionWindowsRegistry(connectedPlugins);\n setPluginMap(createTargetToPluginMapping(connectedPlugins));\n }, [plugins]);\n\n return <PluginContext.Provider value={pluginMap}>{children}</PluginContext.Provider>;\n}\n\nPluginProvider.propTypes = {\n children: PropTypes.node,\n plugins: PropTypes.array,\n};\n","/*!\n * CSSJanus. https://www.mediawiki.org/wiki/CSSJanus\n *\n * Copyright 2014 Trevor Parscal\n * Copyright 2010 Roan Kattouw\n * Copyright 2008 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar cssjanus;\n\n/**\n * Create a tokenizer object.\n *\n * This utility class is used by CSSJanus to protect strings by replacing them temporarily with\n * tokens and later transforming them back.\n *\n * @class\n * @constructor\n * @param {RegExp} regex Regular expression whose matches to replace by a token\n * @param {string} token Placeholder text\n */\nfunction Tokenizer( regex, token ) {\n\n\tvar matches = [],\n\t\tindex = 0;\n\n\t/**\n\t * Add a match.\n\t *\n\t * @private\n\t * @param {string} match Matched string\n\t * @return {string} Token to leave in the matched string's place\n\t */\n\tfunction tokenizeCallback( match ) {\n\t\tmatches.push( match );\n\t\treturn token;\n\t}\n\n\t/**\n\t * Get a match.\n\t *\n\t * @private\n\t * @return {string} Original matched string to restore\n\t */\n\tfunction detokenizeCallback() {\n\t\treturn matches[ index++ ];\n\t}\n\n\treturn {\n\t\t/**\n\t\t * Replace matching strings with tokens.\n\t\t *\n\t\t * @param {string} str String to tokenize\n\t\t * @return {string} Tokenized string\n\t\t */\n\t\ttokenize: function ( str ) {\n\t\t\treturn str.replace( regex, tokenizeCallback );\n\t\t},\n\n\t\t/**\n\t\t * Restores tokens to their original values.\n\t\t *\n\t\t * @param {string} str String previously run through tokenize()\n\t\t * @return {string} Original string\n\t\t */\n\t\tdetokenize: function ( str ) {\n\t\t\treturn str.replace( new RegExp( '(' + token + ')', 'g' ), detokenizeCallback );\n\t\t}\n\t};\n}\n\n/**\n * Create a CSSJanus object.\n *\n * CSSJanus transforms CSS rules with horizontal relevance so that a left-to-right stylesheet can\n * become a right-to-left stylesheet automatically. Processing can be bypassed for an entire rule\n * or a single property by adding a / * @noflip * / comment above the rule or property.\n *\n * @class\n * @constructor\n */\nfunction CSSJanus() {\n\n\tvar\n\t\t// Tokens\n\t\ttemporaryToken = '`TMP`',\n\t\ttemporaryLtrToken = '`TMPLTR`',\n\t\ttemporaryRtlToken = '`TMPRTL`',\n\t\tnoFlipSingleToken = '`NOFLIP_SINGLE`',\n\t\tnoFlipClassToken = '`NOFLIP_CLASS`',\n\t\tcommentToken = '`COMMENT`',\n\t\t// Patterns\n\t\tnonAsciiPattern = '[^\\\\u0020-\\\\u007e]',\n\t\tunicodePattern = '(?:(?:\\\\\\\\[0-9a-f]{1,6})(?:\\\\r\\\\n|\\\\s)?)',\n\t\tnumPattern = '(?:[0-9]*\\\\.[0-9]+|[0-9]+)',\n\t\tunitPattern = '(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)',\n\t\tdirectionPattern = 'direction\\\\s*:\\\\s*',\n\t\turlSpecialCharsPattern = '[!#$%&*-~]',\n\t\tvalidAfterUriCharsPattern = '[\\'\"]?\\\\s*',\n\t\tnonLetterPattern = '(^|[^a-zA-Z])',\n\t\tcharsWithinSelectorPattern = '[^\\\\}]*?',\n\t\tnoFlipPattern = '\\\\/\\\\*\\\\!?\\\\s*@noflip\\\\s*\\\\*\\\\/',\n\t\tcommentPattern = '\\\\/\\\\*[^*]*\\\\*+([^\\\\/*][^*]*\\\\*+)*\\\\/',\n\t\tescapePattern = '(?:' + unicodePattern + '|\\\\\\\\[^\\\\r\\\\n\\\\f0-9a-f])',\n\t\tnmstartPattern = '(?:[_a-z]|' + nonAsciiPattern + '|' + escapePattern + ')',\n\t\tnmcharPattern = '(?:[_a-z0-9-]|' + nonAsciiPattern + '|' + escapePattern + ')',\n\t\tidentPattern = '-?' + nmstartPattern + nmcharPattern + '*',\n\t\tquantPattern = numPattern + '(?:\\\\s*' + unitPattern + '|' + identPattern + ')?',\n\t\tsignedQuantPattern = '((?:-?' + quantPattern + ')|(?:inherit|auto))',\n\t\tsignedQuantSimplePattern = '(?:-?' + numPattern + '(?:\\\\s*' + unitPattern + ')?)',\n\t\tmathOperatorsPattern = '(?:\\\\+|\\\\-|\\\\*|\\\\/)',\n\t\tallowedCharsPattern = '(?:\\\\(|\\\\)|\\\\t| )',\n\t\tcalcEquationPattern = '(?:' + allowedCharsPattern + '|' + signedQuantSimplePattern + '|' + mathOperatorsPattern + '){3,}',\n\t\tcalcPattern = '(?:calc\\\\((?:' + calcEquationPattern + ')\\\\))',\n\t\tsignedQuantCalcPattern = '((?:-?' + quantPattern + ')|(?:inherit|auto)|' + calcPattern + ')',\n\t\tfourNotationQuantPropsPattern = '((?:margin|padding|border-width)\\\\s*:\\\\s*)',\n\t\tfourNotationColorPropsPattern = '((?:-color|border-style)\\\\s*:\\\\s*)',\n\t\tcolorPattern = '(#?' + nmcharPattern + '+|(?:rgba?|hsla?)\\\\([ \\\\d.,%-]+\\\\))',\n\t\t// The use of a lazy match (\"*?\") may cause a backtrack limit to be exceeded before finding\n\t\t// the intended match. This affects 'urlCharsPattern' and 'lookAheadNotOpenBracePattern'.\n\t\t// We have not yet found this problem on Node.js, but we have on PHP 7, where it was\n\t\t// mitigated by using a possessive quantifier (\"*+\"), which are not supported in JS.\n\t\t// See <https://phabricator.wikimedia.org/T215746#4944830>.\n\t\turlCharsPattern = '(?:' + urlSpecialCharsPattern + '|' + nonAsciiPattern + '|' + escapePattern + ')*?',\n\t\tlookAheadNotLetterPattern = '(?![a-zA-Z])',\n\t\tlookAheadNotOpenBracePattern = '(?!(' + nmcharPattern + '|\\\\r?\\\\n|\\\\s|#|\\\\:|\\\\.|\\\\,|\\\\+|>|~|\\\\(|\\\\)|\\\\[|\\\\]|=|\\\\*=|~=|\\\\^=|\\'[^\\']*\\'|\"[^\"]*\"|' + commentToken + ')*?{)',\n\t\tlookAheadNotClosingParenPattern = '(?!' + urlCharsPattern + validAfterUriCharsPattern + '\\\\))',\n\t\tlookAheadForClosingParenPattern = '(?=' + urlCharsPattern + validAfterUriCharsPattern + '\\\\))',\n\t\tsuffixPattern = '(\\\\s*(?:!important\\\\s*)?[;}])',\n\t\t// Regular expressions\n\t\ttemporaryTokenRegExp = /`TMP`/g,\n\t\ttemporaryLtrTokenRegExp = /`TMPLTR`/g,\n\t\ttemporaryRtlTokenRegExp = /`TMPRTL`/g,\n\t\tcommentRegExp = new RegExp( commentPattern, 'gi' ),\n\t\tnoFlipSingleRegExp = new RegExp( '(' + noFlipPattern + lookAheadNotOpenBracePattern + '[^;}]+;?)', 'gi' ),\n\t\tnoFlipClassRegExp = new RegExp( '(' + noFlipPattern + charsWithinSelectorPattern + '})', 'gi' ),\n\t\tdirectionLtrRegExp = new RegExp( '(' + directionPattern + ')ltr', 'gi' ),\n\t\tdirectionRtlRegExp = new RegExp( '(' + directionPattern + ')rtl', 'gi' ),\n\t\tleftRegExp = new RegExp( nonLetterPattern + '(left)' + lookAheadNotLetterPattern + lookAheadNotClosingParenPattern + lookAheadNotOpenBracePattern, 'gi' ),\n\t\trightRegExp = new RegExp( nonLetterPattern + '(right)' + lookAheadNotLetterPattern + lookAheadNotClosingParenPattern + lookAheadNotOpenBracePattern, 'gi' ),\n\t\tleftInUrlRegExp = new RegExp( nonLetterPattern + '(left)' + lookAheadForClosingParenPattern, 'gi' ),\n\t\trightInUrlRegExp = new RegExp( nonLetterPattern + '(right)' + lookAheadForClosingParenPattern, 'gi' ),\n\t\tltrDirSelector = /(:dir\\( *)ltr( *\\))/g,\n\t\trtlDirSelector = /(:dir\\( *)rtl( *\\))/g,\n\t\tltrInUrlRegExp = new RegExp( nonLetterPattern + '(ltr)' + lookAheadForClosingParenPattern, 'gi' ),\n\t\trtlInUrlRegExp = new RegExp( nonLetterPattern + '(rtl)' + lookAheadForClosingParenPattern, 'gi' ),\n\t\tcursorEastRegExp = new RegExp( nonLetterPattern + '([ns]?)e-resize', 'gi' ),\n\t\tcursorWestRegExp = new RegExp( nonLetterPattern + '([ns]?)w-resize', 'gi' ),\n\t\tfourNotationQuantRegExp = new RegExp( fourNotationQuantPropsPattern + signedQuantCalcPattern + '(\\\\s+)' + signedQuantCalcPattern + '(\\\\s+)' + signedQuantCalcPattern + '(\\\\s+)' + signedQuantCalcPattern + suffixPattern, 'gi' ),\n\t\tfourNotationColorRegExp = new RegExp( fourNotationColorPropsPattern + colorPattern + '(\\\\s+)' + colorPattern + '(\\\\s+)' + colorPattern + '(\\\\s+)' + colorPattern + suffixPattern, 'gi' ),\n\t\tbgHorizontalPercentageRegExp = new RegExp( '(background(?:-position)?\\\\s*:\\\\s*(?:[^:;}\\\\s]+\\\\s+)*?)(' + quantPattern + ')', 'gi' ),\n\t\tbgHorizontalPercentageXRegExp = new RegExp( '(background-position-x\\\\s*:\\\\s*)(-?' + numPattern + '%)', 'gi' ),\n\t\t// border-radius: <length or percentage>{1,4} [optional: / <length or percentage>{1,4} ]\n\t\tborderRadiusRegExp = new RegExp( '(border-radius\\\\s*:\\\\s*)' + signedQuantPattern + '(?:(?:\\\\s+' + signedQuantPattern + ')(?:\\\\s+' + signedQuantPattern + ')?(?:\\\\s+' + signedQuantPattern + ')?)?' +\n\t\t\t'(?:(?:(?:\\\\s*\\\\/\\\\s*)' + signedQuantPattern + ')(?:\\\\s+' + signedQuantPattern + ')?(?:\\\\s+' + signedQuantPattern + ')?(?:\\\\s+' + signedQuantPattern + ')?)?' + suffixPattern, 'gi' ),\n\t\tboxShadowRegExp = new RegExp( '(box-shadow\\\\s*:\\\\s*(?:inset\\\\s*)?)' + signedQuantPattern, 'gi' ),\n\t\ttextShadow1RegExp = new RegExp( '(text-shadow\\\\s*:\\\\s*)' + signedQuantPattern + '(\\\\s*)' + colorPattern, 'gi' ),\n\t\ttextShadow2RegExp = new RegExp( '(text-shadow\\\\s*:\\\\s*)' + colorPattern + '(\\\\s*)' + signedQuantPattern, 'gi' ),\n\t\ttextShadow3RegExp = new RegExp( '(text-shadow\\\\s*:\\\\s*)' + signedQuantPattern, 'gi' ),\n\t\ttranslateXRegExp = new RegExp( '(transform\\\\s*:[^;}]*)(translateX\\\\s*\\\\(\\\\s*)' + signedQuantPattern + '(\\\\s*\\\\))', 'gi' ),\n\t\ttranslateRegExp = new RegExp( '(transform\\\\s*:[^;}]*)(translate\\\\s*\\\\(\\\\s*)' + signedQuantPattern + '((?:\\\\s*,\\\\s*' + signedQuantPattern + '){0,2}\\\\s*\\\\))', 'gi' );\n\n\t/**\n\t * Invert the horizontal value of a background position property.\n\t *\n\t * @private\n\t * @param {string} match Matched property\n\t * @param {string} pre Text before value\n\t * @param {string} value Horizontal value\n\t * @return {string} Inverted property\n\t */\n\tfunction calculateNewBackgroundPosition( match, pre, value ) {\n\t\tvar idx, len;\n\t\t// Inside a function call (unbalanced parens), not a position, so we skip.\n\t\tif ( pre.split( '(' ).length > pre.split( ')' ).length ) {\n\t\t\treturn match;\n\t\t}\n\t\tif ( value.slice( -1 ) === '%' ) {\n\t\t\tidx = value.indexOf( '.' );\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\t// Two off, one for the \"%\" at the end, one for the dot itself\n\t\t\t\tlen = value.length - idx - 2;\n\t\t\t\tvalue = 100 - parseFloat( value );\n\t\t\t\tvalue = value.toFixed( len ) + '%';\n\t\t\t} else {\n\t\t\t\tvalue = 100 - parseFloat( value ) + '%';\n\t\t\t}\n\t\t}\n\t\treturn pre + value;\n\t}\n\n\t/**\n\t * Invert a set of border radius values.\n\t *\n\t * @private\n\t * @param {Array} values Matched values\n\t * @return {string} Inverted values\n\t */\n\tfunction flipBorderRadiusValues( values ) {\n\t\tswitch ( values.length ) {\n\t\t\tcase 4:\n\t\t\t\tvalues = [ values[ 1 ], values[ 0 ], values[ 3 ], values[ 2 ] ];\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tvalues = [ values[ 1 ], values[ 0 ], values[ 1 ], values[ 2 ] ];\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tvalues = [ values[ 1 ], values[ 0 ] ];\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tvalues = [ values[ 0 ] ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn values.join( ' ' );\n\t}\n\n\t/**\n\t * Invert a set of border radius values.\n\t *\n\t * @private\n\t * @param {string} match Matched property\n\t * @param {string} pre Text before value\n\t * @param {string} [firstGroup1]\n\t * @param {string} [firstGroup2]\n\t * @param {string} [firstGroup3]\n\t * @param {string} [firstGroup4]\n\t * @param {string} [secondGroup1]\n\t * @param {string} [secondGroup2]\n\t * @param {string} [secondGroup3]\n\t * @param {string} [secondGroup4]\n\t * @param {string} [post] Text after value\n\t * @return {string} Inverted property\n\t */\n\tfunction calculateNewBorderRadius( match, pre ) {\n\t\tvar values,\n\t\t\targs = [].slice.call( arguments ),\n\t\t\tfirstGroup = args.slice( 2, 6 ).filter( function ( val ) {\n\t\t\t\treturn val;\n\t\t\t} ),\n\t\t\tsecondGroup = args.slice( 6, 10 ).filter( function ( val ) {\n\t\t\t\treturn val;\n\t\t\t} ),\n\t\t\tpost = args[ 10 ] || '';\n\n\t\tif ( secondGroup.length ) {\n\t\t\tvalues = flipBorderRadiusValues( firstGroup ) + ' / ' + flipBorderRadiusValues( secondGroup );\n\t\t} else {\n\t\t\tvalues = flipBorderRadiusValues( firstGroup );\n\t\t}\n\n\t\treturn pre + values + post;\n\t}\n\n\t/**\n\t * Flip the sign of a CSS value, possibly with a unit.\n\t *\n\t * We can't just negate the value with unary minus due to the units.\n\t *\n\t * @private\n\t * @param {string} value\n\t * @return {string}\n\t */\n\tfunction flipSign( value ) {\n\t\tif ( parseFloat( value ) === 0 ) {\n\t\t\t// Don't mangle zeroes\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( value[ 0 ] === '-' ) {\n\t\t\treturn value.slice( 1 );\n\t\t}\n\n\t\treturn '-' + value;\n\t}\n\n\t/**\n\t * @private\n\t * @param {string} match\n\t * @param {string} property\n\t * @param {string} offset\n\t * @return {string}\n\t */\n\tfunction calculateNewShadow( match, property, offset ) {\n\t\treturn property + flipSign( offset );\n\t}\n\n\t/**\n\t * @private\n\t * @param {string} match\n\t * @param {string} property\n\t * @param {string} prefix\n\t * @param {string} offset\n\t * @param {string} suffix\n\t * @return {string}\n\t */\n\tfunction calculateNewTranslate( match, property, prefix, offset, suffix ) {\n\t\treturn property + prefix + flipSign( offset ) + suffix;\n\t}\n\n\t/**\n\t * @private\n\t * @param {string} match\n\t * @param {string} property\n\t * @param {string} color\n\t * @param {string} space\n\t * @param {string} offset\n\t * @return {string}\n\t */\n\tfunction calculateNewFourTextShadow( match, property, color, space, offset ) {\n\t\treturn property + color + space + flipSign( offset );\n\t}\n\n\treturn {\n\t\t/**\n\t\t * Transform a left-to-right stylesheet to right-to-left.\n\t\t *\n\t\t * @param {string} css Stylesheet to transform\n\t\t * @param {Object} options Options\n\t\t * @param {boolean} [options.transformDirInUrl=false] Transform directions in URLs\n\t\t * (e.g. 'ltr', 'rtl')\n\t\t * @param {boolean} [options.transformEdgeInUrl=false] Transform edges in URLs\n\t\t * (e.g. 'left', 'right')\n\t\t * @return {string} Transformed stylesheet\n\t\t */\n\t\t'transform': function ( css, options ) { // eslint-disable-line quote-props\n\t\t\t// Use single quotes in this object literal key for closure compiler.\n\t\t\t// Tokenizers\n\t\t\tvar noFlipSingleTokenizer = new Tokenizer( noFlipSingleRegExp, noFlipSingleToken ),\n\t\t\t\tnoFlipClassTokenizer = new Tokenizer( noFlipClassRegExp, noFlipClassToken ),\n\t\t\t\tcommentTokenizer = new Tokenizer( commentRegExp, commentToken );\n\n\t\t\t// Tokenize\n\t\t\tcss = commentTokenizer.tokenize(\n\t\t\t\tnoFlipClassTokenizer.tokenize(\n\t\t\t\t\tnoFlipSingleTokenizer.tokenize(\n\t\t\t\t\t\t// We wrap tokens in ` , not ~ like the original implementation does.\n\t\t\t\t\t\t// This was done because ` is not a legal character in CSS and can only\n\t\t\t\t\t\t// occur in URLs, where we escape it to %60 before inserting our tokens.\n\t\t\t\t\t\tcss.replace( '`', '%60' )\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Transform URLs\n\t\t\tif ( options.transformDirInUrl ) {\n\t\t\t\t// Replace 'ltr' with 'rtl' and vice versa in background URLs\n\t\t\t\tcss = css\n\t\t\t\t\t.replace( ltrDirSelector, '$1' + temporaryLtrToken + '$2' )\n\t\t\t\t\t.replace( rtlDirSelector, '$1' + temporaryRtlToken + '$2' )\n\t\t\t\t\t.replace( ltrInUrlRegExp, '$1' + temporaryToken )\n\t\t\t\t\t.replace( rtlInUrlRegExp, '$1ltr' )\n\t\t\t\t\t.replace( temporaryTokenRegExp, 'rtl' )\n\t\t\t\t\t.replace( temporaryLtrTokenRegExp, 'ltr' )\n\t\t\t\t\t.replace( temporaryRtlTokenRegExp, 'rtl' );\n\t\t\t}\n\t\t\tif ( options.transformEdgeInUrl ) {\n\t\t\t\t// Replace 'left' with 'right' and vice versa in background URLs\n\t\t\t\tcss = css\n\t\t\t\t\t.replace( leftInUrlRegExp, '$1' + temporaryToken )\n\t\t\t\t\t.replace( rightInUrlRegExp, '$1left' )\n\t\t\t\t\t.replace( temporaryTokenRegExp, 'right' );\n\t\t\t}\n\n\t\t\t// Transform rules\n\t\t\tcss = css\n\t\t\t\t// Replace direction: ltr; with direction: rtl; and vice versa.\n\t\t\t\t.replace( directionLtrRegExp, '$1' + temporaryToken )\n\t\t\t\t.replace( directionRtlRegExp, '$1ltr' )\n\t\t\t\t.replace( temporaryTokenRegExp, 'rtl' )\n\t\t\t\t// Flip rules like left: , padding-right: , etc.\n\t\t\t\t.replace( leftRegExp, '$1' + temporaryToken )\n\t\t\t\t.replace( rightRegExp, '$1left' )\n\t\t\t\t.replace( temporaryTokenRegExp, 'right' )\n\t\t\t\t// Flip East and West in rules like cursor: nw-resize;\n\t\t\t\t.replace( cursorEastRegExp, '$1$2' + temporaryToken )\n\t\t\t\t.replace( cursorWestRegExp, '$1$2e-resize' )\n\t\t\t\t.replace( temporaryTokenRegExp, 'w-resize' )\n\t\t\t\t// Border radius\n\t\t\t\t.replace( borderRadiusRegExp, calculateNewBorderRadius )\n\t\t\t\t// Shadows\n\t\t\t\t.replace( boxShadowRegExp, calculateNewShadow )\n\t\t\t\t.replace( textShadow1RegExp, calculateNewFourTextShadow )\n\t\t\t\t.replace( textShadow2RegExp, calculateNewFourTextShadow )\n\t\t\t\t.replace( textShadow3RegExp, calculateNewShadow )\n\t\t\t\t// Translate\n\t\t\t\t.replace( translateXRegExp, calculateNewTranslate )\n\t\t\t\t.replace( translateRegExp, calculateNewTranslate )\n\t\t\t\t// Swap the second and fourth parts in four-part notation rules\n\t\t\t\t// like padding: 1px 2px 3px 4px;\n\t\t\t\t.replace( fourNotationQuantRegExp, '$1$2$3$8$5$6$7$4$9' )\n\t\t\t\t.replace( fourNotationColorRegExp, '$1$2$3$8$5$6$7$4$9' )\n\t\t\t\t// Flip horizontal background percentages\n\t\t\t\t.replace( bgHorizontalPercentageRegExp, calculateNewBackgroundPosition )\n\t\t\t\t.replace( bgHorizontalPercentageXRegExp, calculateNewBackgroundPosition );\n\n\t\t\t// Detokenize\n\t\t\tcss = noFlipSingleTokenizer.detokenize(\n\t\t\t\tnoFlipClassTokenizer.detokenize(\n\t\t\t\t\tcommentTokenizer.detokenize( css )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\treturn css;\n\t\t}\n\t};\n}\n\n/* Initialization */\n\ncssjanus = new CSSJanus();\n\n/* Exports */\n\nif ( typeof module !== 'undefined' && module.exports ) {\n\t/**\n\t * Transform a left-to-right stylesheet to right-to-left.\n\t *\n\t * This function is a static wrapper around the transform method of an instance of CSSJanus.\n\t *\n\t * @param {string} css Stylesheet to transform\n\t * @param {Object|boolean} [options] Options object, or transformDirInUrl option (back-compat)\n\t * @param {boolean} [options.transformDirInUrl=false] Transform directions in URLs\n\t * (e.g. 'ltr', 'rtl')\n\t * @param {boolean} [options.transformEdgeInUrl=false] Transform edges in URLs\n\t * (e.g. 'left', 'right')\n\t * @param {boolean} [transformEdgeInUrl] Back-compat parameter\n\t * @return {string} Transformed stylesheet\n\t */\n\texports.transform = function ( css, options, transformEdgeInUrl ) {\n\t\tvar norm;\n\t\tif ( typeof options === 'object' ) {\n\t\t\tnorm = options;\n\t\t} else {\n\t\t\tnorm = {};\n\t\t\tif ( typeof options === 'boolean' ) {\n\t\t\t\tnorm.transformDirInUrl = options;\n\t\t\t}\n\t\t\tif ( typeof transformEdgeInUrl === 'boolean' ) {\n\t\t\t\tnorm.transformEdgeInUrl = transformEdgeInUrl;\n\t\t\t}\n\t\t}\n\t\treturn cssjanus.transform( css, norm );\n\t};\n} else if ( typeof window !== 'undefined' ) {\n\t/* global window */\n\t// Allow cssjanus to be used in a browser.\n\t// eslint-disable-next-line dot-notation\n\twindow[ 'cssjanus' ] = cssjanus;\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace} from './Utility.js'\nimport {node, char, prev, next, peek, token, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar parens = 0\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) parens++, characters += '('\n\t\t\t\telse characters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// )\n\t\t\tcase 41:\n\t\t\t\tparens--, characters += ')'\n\t\t\t\tbreak\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tif (parens > 0) {\n\t\t\t\t\tcharacters += from(character)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tif ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters) && substr(characters, -1, void 0) !== ' ') characters += ' '\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tif (parens > 0 && character) {\n\t\t\t\t\tcharacters += from(character)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length || variable === 0))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// c(ontainer)\n\t\t\t\t\t\t\t\t\tcase 99:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 3) === 110) break\n\t\t\t\t\t\t\t\t\t// l(ayer)\n\t\t\t\t\t\t\t\t\tcase 108:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 2) === 97) break\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\toffset = 0\n\t\t\t\t\t\t\t\t\t// d(ocument) m(edia) s(upports)\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset) parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\telse parse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tif (parens > 0) break\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599:\n\t\t\treturn WEBKIT + value + value\n\t\t// mask-composite\n\t\tcase 4855:\n\t\t\treturn WEBKIT + value.replace('add', 'source-over').replace('substract', 'source-out').replace('intersect', 'source-in').replace('exclude', 'xor') + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /space-between/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span') ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span') ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES, NAMESPACE} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case NAMESPACE: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import cssjanus from 'cssjanus';\nimport { COMMENT, compile, DECLARATION, IMPORT, RULESET, serialize, strlen, KEYFRAMES, MEDIA, SUPPORTS, } from 'stylis';\nfunction stringifyPreserveComments(element, index, children) {\n switch (element.type) {\n case IMPORT:\n case DECLARATION:\n case COMMENT:\n return (element.return = element.return || element.value);\n case RULESET: {\n element.value = Array.isArray(element.props) ? element.props.join(',') : element.props;\n if (Array.isArray(element.children)) {\n element.children.forEach(function (x) {\n if (x.type === COMMENT)\n x.children = x.value;\n });\n }\n }\n }\n var serializedChildren = serialize(Array.prototype.concat(element.children), stringifyPreserveComments);\n return strlen(serializedChildren) ? (element.return = element.value + '{' + serializedChildren + '}') : '';\n}\nfunction stylisRTLPlugin(element, index, children, callback) {\n if (element.type === KEYFRAMES ||\n element.type === SUPPORTS ||\n (element.type === RULESET && (!element.parent || element.parent.type === MEDIA || element.parent.type === RULESET))) {\n var stringified = cssjanus.transform(stringifyPreserveComments(element, index, children));\n element.children = stringified ? compile(stringified)[0].children : [];\n element.return = '';\n }\n}\n// stable identifier that will not be dropped by minification unless the whole module\n// is unused\nObject.defineProperty(stylisRTLPlugin, 'name', { value: 'stylisRTLPlugin' });\nexport default stylisRTLPlugin;\n//# sourceMappingURL=stylis-rtl.js.map","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return String(object);\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.includes('###') ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nconst _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => !nsSeparator.includes(c) && !keySeparator.includes(c));\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].includes(typeof next) && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace(/_/g, '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n args = args.map(a => isString(a) ? a.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, ' ') : a);\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n once(event, listener) {\n const wrapper = (...args) => {\n listener(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n return this;\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(event, ...args);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (!this.options.ns.includes(ns)) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.includes('.')) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.includes('.')) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.includes('.')) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.includes('.')) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n const keySeparator = opts?.keySeparator ?? '.';\n const nsSeparator = opts?.nsSeparator ?? ':';\n const strict = opts?.enableSelector === 'strict';\n if (path.length > 1 && nsSeparator) {\n const ns = opts?.ns;\n const nsList = strict ? Array.isArray(ns) ? ns : ns ? [ns] : null : Array.isArray(ns) ? ns : null;\n if (nsList) {\n const candidates = strict ? nsList : nsList.length > 1 ? nsList.slice(1) : [];\n if (candidates.includes(path[0])) {\n return `${path[0]}${nsSeparator}${path.slice(1).join(keySeparator)}`;\n }\n }\n }\n return path.join(keySeparator);\n}\n\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n this.checkedLoadedFor = {};\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n if (resolved?.res === undefined) return false;\n const isObject = shouldHandleAsObject(resolved.res);\n if (opt.returnObjects === false && isObject) {\n return false;\n }\n return true;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.includes(nsSeparator);\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.includes(parts[0])) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : String(k));\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && !noObject.includes(resType) && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, needsPluralHandling && !updateMissing ? `${key}${this.pluralResolver.getSuffix(lng, opt.count, opt)}` : key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && !suffixes.includes(`${this.options.pluralSeparator}zero`)) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n if (Array.isArray(keys)) keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : k);\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!this.checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n this.checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data = {\n ...data,\n count: options.count\n };\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && option.startsWith(prefix) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.includes('-')) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.includes(code);\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return true;\n if (!supportedLng.includes('-') && !lngOnly.includes('-')) return false;\n if (supportedLng.includes('-') && !lngOnly.includes('-') && supportedLng.slice(0, supportedLng.indexOf('-')) === lngOnly) return true;\n if (supportedLng.startsWith(lngOnly) && lngOnly.length > 1) return true;\n return false;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.includes('-') || code.includes('_'))) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (!codes.includes(fc)) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (typeof Intl === 'undefined') {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix ? regexEscape(unescapePrefix) : '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix ? regexEscape(unescapeSuffix) : '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (!key.includes(this.formatSeparator)) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n if (!this.escapeValue && typeof str === 'string' && /\\$t\\([^)]*\\{[^}]*\\{\\{/.test(str)) {\n this.logger.warn('nesting options string contains interpolated variables with escapeValue: false — ' + 'if any of those values are attacker-controlled they can inject additional ' + 'nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing ' + 'it to t(), or keep escapeValue: true.');\n }\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => val\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? this.escape(val) : val\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], regexSafe(safeValue));\n if (skipOnVariables) {\n todo.regex.lastIndex += safeValue.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (!key.includes(sep)) return key;\n const c = key.split(new RegExp(`${regexEscape(sep)}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || (matchedDoubleQuotes?.length ?? 0) % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.includes(this.prefix)) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/s.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.includes('(')) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].slice(0, -1);\n if (formatName === 'currency' && !optStr.includes(':')) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && !optStr.includes(':')) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n if (!format) return value;\n if (value == null) return value;\n const rawFormats = format.split(this.formatSeparator);\n const formats = [];\n for (let i = 0; i < rawFormats.length; i++) {\n let f = rawFormats[i];\n while (f.indexOf('(') > -1 && !f.includes(')') && i + 1 < rawFormats.length) {\n f = `${f}${this.formatSeparator}${rawFormats[++i]}`;\n }\n formats.push(f);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read(lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n enableSelector: false,\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && !options.supportedLngs.includes('cimode')) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (!options.ns.includes('translation')) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator\n });\n if (formatter) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if ((this.languages || this.isLanguageChangingTo) && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (!toLoad.includes(l)) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].includes(l)) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].includes(lngInLngs)) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && !this.languages.includes(l) && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix, fixedOpts) {\n const scopeNs = fixedOpts?.scopeNs;\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n const explicitCallNs = o.ns !== undefined && o.ns !== null;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const selectorOpts = {\n ...this.options,\n ...o\n };\n if (Array.isArray(scopeNs) && !explicitCallNs) selectorOpts.ns = scopeNs;\n if (typeof o.keyPrefix === 'function') o.keyPrefix = keysFromSelector(o.keyPrefix, selectorOpts);\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, selectorOpts);\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, selectorOpts);\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (!this.options.ns.includes(n)) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => !preloaded.includes(lng) && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.includes(languageUtils.getLanguagePartFromCode(lng)) || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n const instance = new I18n(options, callback);\n instance.createInstance = I18n.createInstance;\n return instance;\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n if (options.interpolation) {\n const defOpts = get();\n const mergedInterpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation,\n ...options.interpolation\n };\n const mergedForInterpolator = {\n ...mergedOptions,\n interpolation: mergedInterpolation\n };\n clone.services.interpolator = new Interpolator(mergedForInterpolator);\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","{\n \"translation\": {\n \"aboutThisItem\": \"عن هذا العنصر\",\n \"addedFromUrl\": \"(تمت إضافته من الرابط)\",\n \"addManifestUrl\": \"موقع المصدر\",\n \"addManifestUrlHelp\": \"الرابط لمصدر IIIF \",\n \"addResource\": \"اضف مصدر\",\n \"annotationCanvasLabel_1/1\": \"العنصر: [{{الملصق}}]\",\n \"annotationCanvasLabel_1/2\": \"يسار: [{{الملصق }}]\",\n \"annotationCanvasLabel_2/2\": \"يمين: [{{الملصق}}]\",\n \"annotations\": \"ملاحظات\",\n \"attribution\": \"إسناد\",\n \"attributionTitle\": \"حقوق\",\n \"authenticationFailed\": \"التوثيق لم ينجح\",\n \"authenticationRequired\": \"يجب توثيق الحساب لمنح الدخول الكامل\",\n \"backToResults\": \"الرجوع الى النتائج\",\n \"book\": \"كتاب\",\n \"bottom\": \"أسفل\",\n \"cancel\": \"الغاء\",\n \"canvasIndex\": \"فهرس\",\n \"changeTheme\": \"قم بتغيير الموضوع\",\n \"clearSearch\": \"امسح\",\n \"closeAddResourceForm\": \"إغلاق الإستمارة\",\n \"closeAddResourceMenu\": \"إغلاق قائمة المصادر\",\n \"closeCompanionWindow\": \"إغلاق اللوحة\",\n \"closeWindow\": \"إغلاق النافذة\",\n \"collapseSection\": \"تصغير جزء {{section}}\",\n \"collapseSidePanel\": \"تصغير الشريط الجانبي\",\n \"continue\": \"استمر\",\n \"copy\": \"نسخ\",\n \"currentItem\": \"العنصر الحالي\",\n \"currentItem_1/1\": \"العنصر الحالي\",\n \"currentItem_1/2\": \"يسار\",\n \"currentItem_2/2\": \"يمين\",\n \"dark\": \"موضوع داكن\",\n \"dismiss\": \"تجاهل\",\n \"downloadExport\": \"تصدير مساحة العمل\",\n \"downloadExportWorkspace\": \"تصدير مساحة العمل\",\n \"elastic\": \"مرن\",\n \"elasticDescription\": \"حرك النوافذ و غير حجمها بحرية في مساحة عمل غير محدودة. يمكن أن تتداخل النوافذ أيضاً .\",\n \"emptyResourceList\": \"قائمة المصادر الخاصة بك فارغة.\",\n \"errorDialogConfirm\": \"حسناً\",\n \"errorDialogTitle\": \"لقد حدث خطأ\",\n \"exitFullScreen\": \"خروج من الشاشة الكاملة\",\n \"expandSection\": \"توسيع الجزء {{section}}\",\n \"expandSidePanel\": \"توسيع الشريط الجانبي\",\n \"fetchManifest\": \"أضف\",\n \"fullScreen\": \"شاشة كاملة\",\n \"gallery\": \"المعرض\",\n \"hideZoomControls\": \"إخفاء ضوابط التكبير\",\n \"highlightAllAnnotations\": \"تحديد الكل\",\n \"iiif_homepage\": \"عن هذه المصدر\",\n \"iiif_manifest\": \"IIIF قائمة \",\n \"iiif_renderings\": \"تنسيقات بديلة\",\n \"iiif_seeAlso\": \"أنظر أيضا\",\n \"import\": \"استورد \",\n \"importWorkspace\": \"استيراد مساحة العمل\",\n \"importWorkspaceHint\": \"قم بلصق تركيبة Mirador 4 ليتم استيراده\",\n \"item\": \"العنصر: {{label}}\",\n \"itemList\": \"قائمة العناصر\",\n \"language\": \"اللغة\",\n \"layer_hide\": \"إخفاء الطبقة\",\n \"layer_move\": \"تحريك الطبقة\",\n \"layer_opacity\": \"تعتيم الطبقة\",\n \"layer_show\": \"إظهار الطبقة\",\n \"layers\": \"طبقات\",\n \"light\": \"موضوع فاتح\",\n \"links\": \"الروابط\",\n \"listAllOpenWindows\": \"انتقل بسرعة للنافذة\",\n \"login\": \"تسجيل الدخول\",\n \"logout\": \"تسجيل الخروج\",\n \"manifestError\": \"لا يمكن إضافة المصدر:\",\n \"maximizeWindow\": \"تكبير النافذة إلى الحد الاكبر\",\n \"minimizeWindow\": \"تصغير النافذة إلى الحد الأدنى\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"مصادر Mirador \",\n \"miradorViewer\": \"مشاهد Mirador\",\n \"more\": \"أكثر...\",\n \"moreResults\": \"نتائج إضافية\",\n \"mosaic\": \"فسيفساء\",\n \"mosaicDescription\": \"حرك وغيٌر حجم النوافذ المتعلقة ببعضها البعض داخل الإطار المرئي.\",\n \"moveCompanionWindowToBottom\": \"انتقل للأسفل\",\n \"moveCompanionWindowToRight\": \"انتقل لليمين\",\n \"nextCanvas\": \"العنصر التالي\",\n \"numItems_one\": \"{{number}} عناصر\",\n \"off\": \"ايقاف\",\n \"openCompanionWindow_annotations\": \"ملاحظات\",\n \"openCompanionWindow_attribution\": \"حقوق\",\n \"openCompanionWindow_canvas\": \"فهرس\",\n \"openCompanionWindow_info\": \"معلومات\",\n \"openCompanionWindow_layers\": \"طبقات\",\n \"openCompanionWindow_search\": \"بحث\",\n \"openInCompanionWindow\": \"افتح في صفحة جديدة\",\n \"openWindows\": \"النوافذ الحالية المفتوحة\",\n \"pagination\": \"{{current}} من {{total}}\",\n \"position\": \"مركز\",\n \"previewWindowTitle\": \"عنوان\",\n \"previousCanvas\": \"العنصر السابق\",\n \"related\": \"ذات صلة\",\n \"resource\": \"مصدر\",\n \"retry\": \"أعد المحاولة \",\n \"right\": \"حق\",\n \"rights\": \"ترخيص\",\n \"searchInputLabel\": \"مصطلحات البحث\",\n \"searchNextResult\": \"النتيجة التالية\",\n \"searchNoResults\": \"لم يتم العثور على نتائج\",\n \"searchPreviousResult\": \"النتيجة السابقة\",\n \"searchSubmitAria\": \"ابحث\",\n \"searchTitle\": \"بحث\",\n \"selectWorkspaceMenu\": \"اختر نوع مساحة العمل\",\n \"showingNumAnnotations_one\": \"تظهر {{number}} ملاحظات\",\n \"showZoomControls\": \"اظهر عناصر التحكم بالتكبير و التصغير\",\n \"sidebarPanelsNavigation\": \"تصفح لوح الشريط الجانبي\",\n \"single\": \"مفرد\",\n \"startHere\": \"إبدأ هنا\",\n \"suggestSearch\": \"ابحث في هذا المستند عن \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"جدول المحتويات\",\n \"theme\": \"موضوع\",\n \"thumbnailList\": \"قائمة الصور المصغرة\",\n \"thumbnailNavigation\": \"الصور المصغرة\",\n \"thumbnails\": \"الصور المصغرة\",\n \"toggleWindowSideBar\": \"تبديل الشريط الجانبي\",\n \"tryAgain\": \"حاول مرة أخرى\",\n \"untitled\": \"[بدون عنوان]\",\n \"view\": \"شاهد\",\n \"welcome\": \"مرحباً بكم في Mirador\",\n \"window\": \"النافذة: {{label}}\",\n \"windowMenu\": \"عرض النوافذ و الصور المصغرة\",\n \"windowNavigation\": \"تصفح النافذة\",\n \"windowPluginButtons\": \"خيارات\",\n \"windowPluginMenu\": \"خيارات النافذة\",\n \"workspace\": \"مساحة العمل\",\n \"workspaceFullScreen\": \"شاشة كاملة\",\n \"workspaceMenu\": \"اعدادات مساحة العمل\",\n \"workspaceOptions\": \"خيارات مساحة العمل \",\n \"workspaceSelectionTitle\": \"اختر نوع مساحة العمل\",\n \"zoomIn\": \"تكبير الصورة\",\n \"zoomOut\": \"تصغير الصورة\",\n \"zoomReset\": \"الرجوع لحجم الصورة الأساسي\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Über Mirador\",\n \"aboutThisItem\": \"Über dieses Element\",\n \"addedFromUrl\": \"(Via URL hinzugefügt)\",\n \"addManifestUrl\": \"Ort der Ressource\",\n \"addManifestUrlHelp\": \"Die URL einer IIIF-Ressource\",\n \"addResource\": \"Ressource hinzufügen\",\n \"annotationCanvasLabel_1/1\": \"Objekt: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Links: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Rechts: [{{label}}]\",\n \"annotations\": \"Annotationen\",\n \"attribution\": \"Zuschreibung\",\n \"attributionTitle\": \"Rechte\",\n \"authenticationFailed\": \"Authentifizierung fehlgeschlagen\",\n \"authenticationRequired\": \"Für vollen Zugriff ist eine Authentifizierung nötig.\",\n \"backToResults\": \"Zurück zur Trefferansicht\",\n \"book\": \"Buch\",\n \"bottom\": \"Unten\",\n \"cancel\": \"Abbrechen\",\n \"canvasIndex\": \"Index\",\n \"changeTheme\": \"Farbschema ändern\",\n \"clearSearch\": \"zurücksetzen\",\n \"clearSearchAria\": \"Suche zurücksetzen\",\n \"close\": \"Schließen\",\n \"closeAddResourceForm\": \"Formular schließen\",\n \"closeAddResourceMenu\": \"Ressourcenliste schließen\",\n \"closeCompanionWindow\": \"Hilfsfenster schließen\",\n \"closeWindow\": \"Fenster schließen\",\n \"collapseSection\": \"Bereich \\\"{{section}}\\\" zuklappen\",\n \"collapseSidePanel\": \"Seitenleiste zuklappen\",\n \"collection\": \"Sammlung\",\n \"continue\": \"Fortfahren\",\n \"copy\": \"Kopieren\",\n \"currentItem\": \"Aktuelles Objekt\",\n \"currentItem_1/1\": \"Aktuelles Objekt\",\n \"currentItem_1/2\": \"Links\",\n \"currentItem_2/2\": \"Rechts\",\n \"dark\": \"Dunkel\",\n \"digitizedView\": \"Digitalisat-Ansicht\",\n \"dismiss\": \"Verwerfen\",\n \"displayNoAnnotations\": \"Keine hervorheben\",\n \"downloadExport\": \"Arbeitsfläche exportieren\",\n \"downloadExportWorkspace\": \"Arbeitsfläche exportieren\",\n \"elastic\": \"Elastisch\",\n \"elasticDescription\": \"Fenster können frei und unbegrenzt innerhalb der Arbeitsfläche bewegt werden und sich überlappen\",\n \"emptyResourceList\": \"Ihre Ressourcenliste ist leer\",\n \"error\": \"Fehler\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Es ist ein Fehler aufgetreten\",\n \"exitFullScreen\": \"Vollbildmodus verlassen\",\n \"expandSection\": \"Bereich \\\"{{section}}\\\" aufklappen\",\n \"expandSidePanel\": \"Seitenleiste aufklappen\",\n \"exportCopied\": \"Die Konfiguration der Arbeitsfläche wurde in die Zwischenablage kopiert.\",\n \"fetchManifest\": \"Hinzufügen\",\n \"fullScreen\": \"Vollbild\",\n \"gallery\": \"Galerie\",\n \"hideWindowSideBar\": \"Seitenleiste ausblenden\",\n \"hideZoomControls\": \"Zoomsteuerung verbergen\",\n \"highlightAllAnnotations\": \"Alle hervorheben\",\n \"iiif_homepage\": \"Über diese Ressource\",\n \"iiif_manifest\": \"IIIF-Manifest\",\n \"iiif_related\": \"Verwandtes\",\n \"iiif_renderings\": \"Alternative Formate\",\n \"iiif_seeAlso\": \"Siehe auch\",\n \"import\": \"Importieren\",\n \"importWorkspace\": \"Arbeitsfläche importieren\",\n \"importWorkspaceHint\": \"Fügen Sie eine Mirador-3-Konfiguration ein, die importiert werden soll.\",\n \"item\": \"Objekt: {{label}}\",\n \"itemList\": \"Kompaktliste\",\n \"jsError\": \"Technische Details\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Sprache\",\n \"layer_hide\": \"Ebene verbergen\",\n \"layer_move\": \"Ebene verschieben\",\n \"layer_moveToBackground\": \"Ebene in der Hintergrund verschieben\",\n \"layer_moveToFront\": \"Ebene ganz nach vorn bringen\",\n \"layer_opacity\": \"Ebenendeckkraft\",\n \"layer_show\": \"Ebene anzeigen\",\n \"layers\": \"Ebenen\",\n \"light\": \"Hell\",\n \"links\": \"Links\",\n \"listAllOpenWindows\": \"Zu Fenster springen\",\n \"login\": \"Anmelden\",\n \"logout\": \"Abmelden\",\n \"manifestError\": \"Die Ressource konnte nicht hinzugefügt werden:\",\n \"maximizeWindow\": \"Fenster maximieren\",\n \"minimizeWindow\": \"Fenster minimieren\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador-Ressourcen\",\n \"miradorViewer\": \"Mirador viewer\",\n \"more\": \"mehr...\",\n \"moreResults\": \"Mehr Treffer\",\n \"mosaic\": \"Mosaik\",\n \"mosaicDescription\": \"Fenster können innerhalb der Arbeitsfläche in Relation zueinander verschoben und ihrer Größe verändert werden.\",\n \"moveCompanionWindowToBottom\": \"Unten anordnen\",\n \"moveCompanionWindowToRight\": \"Rechts anordnen\",\n \"multipartCollection\": \"Mehrteilige Sammlung\",\n \"nextCanvas\": \"Nächstes Objekt\",\n \"noItemSelected\": \"Kein Objekt ausgewählt\",\n \"numItems_one\": \"{{number}} Element\",\n \"numItems_other\": \"{{number}} Elemente\",\n \"off\": \"Keine\",\n \"openCompanionWindow_annotations\": \"Annotationen\",\n \"openCompanionWindow_attribution\": \"Rechte\",\n \"openCompanionWindow_canvas\": \"Index\",\n \"openCompanionWindow_info\": \"Informationen\",\n \"openCompanionWindow_layers\": \"Ebenen\",\n \"openCompanionWindow_search\": \"Suche\",\n \"openInCompanionWindow\": \"In Hilfsfenster öffnen\",\n \"openWindows\": \"Aktuell offene Fenster\",\n \"pagination\": \"{{current}} von {{total}}\",\n \"position\": \"Position\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Vorheriges Objekt\",\n \"related\": \"Verwandtes\",\n \"resource\": \"Ressource\",\n \"retry\": \"Erneut versuchen\",\n \"right\": \"Rechts\",\n \"rights\": \"Lizenz\",\n \"scroll\": \"Kontinuierlich\",\n \"searchInputLabel\": \"Suchbegriffe\",\n \"searchNextResult\": \"Nächster Treffer\",\n \"searchNoResults\": \"Keine Treffer\",\n \"searchPreviousResult\": \"Vorheriger Treffer\",\n \"searchResultsRemaining\": \"{{numLeft}} weitere\",\n \"searchSubmitAria\": \"Suche im Dokument\",\n \"searchTitle\": \"Suche\",\n \"selectWorkspaceMenu\": \"Wählen Sie einen Arbeitsflächentyp\",\n \"showCollection\": \"Zeige Sammlung\",\n \"showingNumAnnotations_one\": \"{{number}} Annotation wird angezeigt\",\n \"showingNumAnnotations_other\": \"{{number}} Annotationen werden angezeigt\",\n \"showWindowSideBar\": \"Seitenleiste einblenden\",\n \"showZoomControls\": \"Zoomsteuerung anzeigen\",\n \"sidebarPanelsNavigation\": \"Hilfsfensternavigation\",\n \"single\": \"Einzeln\",\n \"startHere\": \"Hier starten\",\n \"suggestSearch\": \"Dieses Dokument durchsuchen nach \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Inhaltsverzeichnis\",\n \"theme\": \"Farbschema\",\n \"thumbnailList\": \"Miniaturansicht\",\n \"thumbnailNavigation\": \"Miniaturansicht\",\n \"thumbnails\": \"Miniaturansicht\",\n \"toggleWindowSideBar\": \"Seitenleiste umschalten\",\n \"totalCollections_one\": \"{{count}} Sammlung\",\n \"totalCollections_other\": \"{{count}} Sammlungen\",\n \"totalManifests_one\": \"{{count}} Manifest\",\n \"totalManifests_other\": \"{{count}} Manifeste\",\n \"tryAgain\": \"Wiederholen\",\n \"untitled\": \"[Unbenannt]\",\n \"view\": \"Ansicht\",\n \"viewWorkspaceConfiguration\": \"Zeige Konfiguration der Arbeitsfläche\",\n \"welcome\": \"Willkommen bei Mirador\",\n \"window\": \"Fenster: {{label}}\",\n \"windowMenu\": \"Fenstermenü und Miniaturansicht\",\n \"windowNavigation\": \"Fensternavigation\",\n \"windowPluginButtons\": \"Optionen\",\n \"windowPluginMenu\": \"Fensteroptionen\",\n \"workspace\": \"Arbeitsfläche\",\n \"workspaceFullScreen\": \"Vollbild\",\n \"workspaceMenu\": \"Arbeitsflächenmenü\",\n \"workspaceNavigation\": \"Arbeitsflächensteuerung\",\n \"workspaceOptions\": \"Arbeitsflächenoptionen\",\n \"workspaceSelectionTitle\": \"Bitte wählen Sie einen Arbeitsflächentyp\",\n \"zoomIn\": \"Vergrößern\",\n \"zoomOut\": \"Verkleinern\",\n \"zoomReset\": \"Ansicht zurücksetzen\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"About Project Mirador\",\n \"aboutThisItem\": \"About this item\",\n \"addedFromUrl\": \"(Added from URL)\",\n \"addManifestUrl\": \"Resource location\",\n \"addManifestUrlHelp\": \"The URL of a IIIF resource\",\n \"addResource\": \"Add resource\",\n \"annotationCanvasLabel_1/1\": \"Item: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Left: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Right: [{{label}}]\",\n \"annotations\": \"Annotations\",\n \"attribution\": \"Attribution\",\n \"attributionTitle\": \"Rights\",\n \"authenticationFailed\": \"Authentication failed.\",\n \"authenticationRequired\": \"Authentication required for full access\",\n \"backToResults\": \"Back to results\",\n \"book\": \"Book\",\n \"bottom\": \"Bottom\",\n \"cancel\": \"Cancel\",\n \"canvasIndex\": \"Index\",\n \"changeTheme\": \"Change theme\",\n \"clearSearch\": \"clear\",\n \"clearSearchAria\": \"Reset search\",\n \"close\": \"Close\",\n \"closeAddResourceForm\": \"Close form\",\n \"closeAddResourceMenu\": \"Close resource list\",\n \"closeCompanionWindow\": \"Close panel\",\n \"closeWindow\": \"Close window\",\n \"collapseSection\": \"Collapse \\\"{{section}}\\\" section\",\n \"collapseSidePanel\": \"Collapse sidebar\",\n \"collection\": \"Collection\",\n \"continue\": \"Continue\",\n \"copy\": \"Copy\",\n \"currentItem\": \"Current item\",\n \"currentItem_1/1\": \"Current item\",\n \"currentItem_1/2\": \"Left\",\n \"currentItem_2/2\": \"Right\",\n \"dark\": \"Dark theme\",\n \"digitizedView\": \"Digitized view\",\n \"dismiss\": \"Dismiss\",\n \"displayNoAnnotations\": \"Highlight none\",\n \"downloadExport\": \"Export workspace\",\n \"downloadExportWorkspace\": \"Export workspace\",\n \"elastic\": \"Elastic\",\n \"elasticDescription\": \"Move and size windows freely in an unlimited workspace. Windows can overlap.\",\n \"emptyResourceList\": \"Your resource list is empty\",\n \"error\": \"Error\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"An error occurred\",\n \"exitFullScreen\": \"Exit full screen\",\n \"expandSection\": \"Expand \\\"{{section}}\\\" section\",\n \"expandSidePanel\": \"Expand sidebar\",\n \"exportCopied\": \"The workspace configuration was copied to your clipboard\",\n \"fetchManifest\": \"Add\",\n \"fullScreen\": \"Full Screen\",\n \"gallery\": \"Gallery\",\n \"hideWindowSideBar\": \"Hide sidebar\",\n \"hideZoomControls\": \"Hide zoom controls\",\n \"highlightAllAnnotations\": \"Highlight all\",\n \"iiif_homepage\": \"About this resource\",\n \"iiif_manifest\": \"IIIF manifest\",\n \"iiif_related\": \"Related\",\n \"iiif_renderings\": \"Alternate formats\",\n \"iiif_seeAlso\": \"See also\",\n \"imageFailedToLoad\": \"Problem loading image. See console for details.\",\n \"import\": \"Import\",\n \"importWorkspace\": \"Import workspace\",\n \"importWorkspaceHint\": \"Paste a Mirador 4 configuration to be imported\",\n \"item\": \"Item: {{label}}\",\n \"itemList\": \"Item list\",\n \"jsError\": \"Technical details\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Language\",\n \"layer_hide\": \"Hide layer\",\n \"layer_move\": \"Move layer\",\n \"layer_moveToBackground\": \"Move layer to background\",\n \"layer_moveToFront\": \"Move layer to front\",\n \"layer_opacity\": \"Layer opacity\",\n \"layer_show\": \"Show layer\",\n \"layers\": \"Layers\",\n \"light\": \"Light theme\",\n \"links\": \"Links\",\n \"listAllOpenWindows\": \"Jump to window\",\n \"login\": \"Log in\",\n \"logout\": \"Log out\",\n \"manifestError\": \"The resource cannot be added:\",\n \"maximizeWindow\": \"Maximize window\",\n \"minimizeWindow\": \"Minimize window\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador resources\",\n \"miradorViewer\": \"Mirador viewer\",\n \"more\": \"more...\",\n \"moreResults\": \"More results\",\n \"mosaic\": \"Mosaic\",\n \"mosaicDescription\": \"Move and size windows in relation to each other, within the visible frame.\",\n \"moveCompanionWindowToBottom\": \"Move to bottom\",\n \"moveCompanionWindowToRight\": \"Move to right\",\n \"multipartCollection\": \"Multipart Collection\",\n \"nextCanvas\": \"Next item\",\n \"noItemSelected\": \"No item selected\",\n \"numItems_one\": \"{{number}} item\",\n \"numItems_other\": \"{{number}} items\",\n \"off\": \"Off\",\n \"openCompanionWindow_annotations\": \"Annotations\",\n \"openCompanionWindow_attribution\": \"Rights\",\n \"openCompanionWindow_canvas\": \"Index\",\n \"openCompanionWindow_info\": \"Information\",\n \"openCompanionWindow_layers\": \"Layers\",\n \"openCompanionWindow_search\": \"Search\",\n \"openInCompanionWindow\": \"Open in separate panel\",\n \"openWindows\": \"Current open windows\",\n \"pagination\": \"{{current}} of {{total}}\",\n \"position\": \"Position\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Previous item\",\n \"related\": \"Related\",\n \"resource\": \"Resource\",\n \"retry\": \"Retry\",\n \"right\": \"Right\",\n \"rights\": \"License\",\n \"scroll\": \"Scroll\",\n \"searchInputLabel\": \"search terms\",\n \"searchNextResult\": \"Next result\",\n \"searchNoResults\": \"No results found\",\n \"searchPreviousResult\": \"Previous result\",\n \"searchResultsRemaining\": \"{{numLeft}} remaining\",\n \"searchSubmitAria\": \"Search in the document\",\n \"searchTitle\": \"Search\",\n \"selectWorkspaceMenu\": \"Select workspace type\",\n \"showCollection\": \"Show collection\",\n \"showingNumAnnotations_one\": \"Showing {{number}} annotation\",\n \"showingNumAnnotations_other\": \"Showing {{number}} annotations\",\n \"showWindowSideBar\": \"Show sidebar\",\n \"showZoomControls\": \"Show zoom controls\",\n \"sidebarPanelsNavigation\": \"Sidebar panels navigation\",\n \"single\": \"Single\",\n \"startHere\": \"Start Here\",\n \"suggestSearch\": \"Search this document for \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Table of contents\",\n \"theme\": \"Theme\",\n \"thumbnailList\": \"Thumbnail list\",\n \"thumbnailNavigation\": \"Thumbnails\",\n \"thumbnails\": \"Thumbnails\",\n \"toggleWindowSideBar\": \"Toggle sidebar\",\n \"totalCollections_one\": \"{{count}} collection\",\n \"totalCollections_other\": \"{{count}} collections\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"totalManifests_other\": \"{{count}} manifests\",\n \"tryAgain\": \"Try again\",\n \"untitled\": \"[Untitled]\",\n \"view\": \"View\",\n \"viewWorkspaceConfiguration\": \"View workspace configuration\",\n \"welcome\": \"Welcome to Mirador\",\n \"window\": \"Window: {{label}}\",\n \"windowMenu\": \"Window views & thumbnail display\",\n \"windowNavigation\": \"Window navigation\",\n \"windowPluginButtons\": \"Options\",\n \"windowPluginMenu\": \"Window options\",\n \"workspace\": \"Workspace\",\n \"workspaceFullScreen\": \"Full screen\",\n \"workspaceMenu\": \"Workspace settings\",\n \"workspaceNavigation\": \"Workspace navigation\",\n \"workspaceOptions\": \"Workspace options\",\n \"workspaceSelectionTitle\": \"Select a workspace type\",\n \"zoomIn\": \"Zoom in\",\n \"zoomOut\": \"Zoom out\",\n \"zoomReset\": \"Reset zoom\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Projekti Mirador kohta\",\n \"aboutThisItem\": \"Teave teose kohta\",\n \"addedFromUrl\": \"(Lisatud URL-ist)\",\n \"addManifestUrl\": \"Teose asukoht\",\n \"addManifestUrlHelp\": \"IIIF manifesti URL\",\n \"addResource\": \"Lisa teos\",\n \"annotationCanvasLabel_1/1\": \"Teos: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Vasak: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Parem: [{{label}}]\",\n \"annotations\": \"Annotatsioonid\",\n \"attribution\": \"Omistus\",\n \"attributionTitle\": \"Kasutusõigused\",\n \"authenticationFailed\": \"Autentimine ebaõnnestus\",\n \"authenticationRequired\": \"Juurdepääsu saamiseks on vajalik autentimine.\",\n \"backToResults\": \"Tagasi tulemustele\",\n \"book\": \"Raamat\",\n \"bottom\": \"All\",\n \"cancel\": \"Katkesta\",\n \"canvasIndex\": \"Indeks\",\n \"changeTheme\": \"Muuda teema\",\n \"clearSearch\": \"Puhasta\",\n \"close\": \"Sulge\",\n \"closeAddResourceForm\": \"Sulge vorm\",\n \"closeAddResourceMenu\": \"Sulge teoste loend\",\n \"closeCompanionWindow\": \"Sulge paneel\",\n \"closeWindow\": \"Sulge aken\",\n \"collapseSection\": \"Sulge \\\"{{section}}\\\"\",\n \"collapseSidePanel\": \"Sulge külgpaneel\",\n \"collection\": \"Kollektsioon\",\n \"continue\": \"Jätka\",\n \"copy\": \"Kopeeri\",\n \"currentItem\": \"Kuvatav lõuend\",\n \"currentItem_1/1\": \"Pealkiri\",\n \"currentItem_1/2\": \"Vasak\",\n \"currentItem_2/2\": \"Parem\",\n \"dark\": \"Tume teema\",\n \"digitizedView\": \"Digiteeritud vaade\",\n \"dismiss\": \"Vabasta\",\n \"displayNoAnnotations\": \"Ära kuva annotatsioone\",\n \"downloadExport\": \"Ekspordi tööruum\",\n \"downloadExportWorkspace\": \"Ekspordi tööruum\",\n \"elastic\": \"Paindlik vaade\",\n \"elasticDescription\": \"Saad akende suurust muuta ja neid vabalt tööruumis ringi liigutada.\",\n \"emptyResourceList\": \"Teoste loend on tühi\",\n \"error\": \"Viga\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Esines viga\",\n \"exitFullScreen\": \"Lähtesta\",\n \"expandSection\": \"Ava \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"Ava külgpaneel\",\n \"exportCopied\": \"Tööruumi seadustused kopeeriti lõikepuhvrisse.\",\n \"fetchManifest\": \"Lisa\",\n \"fullScreen\": \"Täisekraan\",\n \"gallery\": \"Galerii\",\n \"hideZoomControls\": \"Peida suurendamisnupud\",\n \"highlightAllAnnotations\": \"Kuva kõik annotatsioonid\",\n \"iiif_homepage\": \"Teave teose kohta\",\n \"iiif_manifest\": \"IIIF manifest\",\n \"iiif_related\": \"Seotud\",\n \"iiif_renderings\": \"Alternatiivsed vormingud\",\n \"iiif_seeAlso\": \"Vaata ka\",\n \"import\": \"Impordi\",\n \"importWorkspace\": \"Impordi tööruum\",\n \"importWorkspaceHint\": \"Kleebi imporditava tööruumi seadistused.\",\n \"item\": \"Lõuend: {{label}}\",\n \"itemList\": \"Lõuendite loetelu\",\n \"jsError\": \"Tehnilised üksikasjad\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Keel\",\n \"layer_hide\": \"Peida kiht\",\n \"layer_move\": \"Liiguta kihti\",\n \"layer_opacity\": \"Kihi läbipaistvus\",\n \"layer_show\": \"Näita kihti\",\n \"layers\": \"Kihid\",\n \"light\": \"Hele teema\",\n \"links\": \"Lingid\",\n \"listAllOpenWindows\": \"Vali aken\",\n \"login\": \"Logi sisse\",\n \"logout\": \"Logi välja\",\n \"manifestError\": \"Ei ole võimalik lisada soovitud teost:\",\n \"maximizeWindow\": \"Suurenda akent\",\n \"minimizeWindow\": \"Vähenda akent\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Miradori teoste loetelu\",\n \"miradorViewer\": \"Miradori vaatur\",\n \"more\": \"rohkem...\",\n \"moreResults\": \"Veel tulemusi\",\n \"mosaic\": \"Mosaiik\",\n \"mosaicDescription\": \"Muuda töölaua akende suurust ja liiguta neid üksteise suhtes.\",\n \"moveCompanionWindowToBottom\": \"Liiguta alla\",\n \"moveCompanionWindowToRight\": \"Liiguta paremale\",\n \"multipartCollection\": \"Mitmeosaline kollektsioon\",\n \"nextCanvas\": \"Järgmine lõuend\",\n \"noItemSelected\": \"Ühtegi lõuendit pole valitud.\",\n \"numItems_one\": \"{{number}} lõuend\",\n \"numItems_other\": \"{{number}} lõuendit\",\n \"off\": \"Väljas\",\n \"openCompanionWindow_annotations\": \"Annotatsioonid\",\n \"openCompanionWindow_attribution\": \"Kasutusõigused\",\n \"openCompanionWindow_canvas\": \"Struktuur\",\n \"openCompanionWindow_info\": \"Teave\",\n \"openCompanionWindow_layers\": \"Kihid\",\n \"openCompanionWindow_search\": \"Otsing\",\n \"openInCompanionWindow\": \"Ava eraldi paneelis\",\n \"openWindows\": \"Hetkel avatud aknad\",\n \"pagination\": \"{{current}} / {{total}}\",\n \"position\": \"Asukoht\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Eelmine lõuend\",\n \"related\": \"Seotud\",\n \"resource\": \"Teos\",\n \"retry\": \"Proovi uuesti\",\n \"right\": \"Parem\",\n \"rights\": \"Kasutuslitsents\",\n \"scroll\": \"Keri\",\n \"searchInputLabel\": \"otsinguterminid\",\n \"searchNextResult\": \"Järgmine tulemus\",\n \"searchNoResults\": \"Tulemusi ei leitud\",\n \"searchPreviousResult\": \"Eelmine tulemus\",\n \"searchResultsRemaining\": \"{{numLeft}} alles\",\n \"searchSubmitAria\": \"Otsi\",\n \"searchTitle\": \"Otsi\",\n \"selectWorkspaceMenu\": \"Vali tööruumi tüüp\",\n \"showCollection\": \"Näita kollektsiooni\",\n \"showingNumAnnotations_one\": \"Näitan {{number}} annotatsiooni\",\n \"showingNumAnnotations_other\": \"Näitan {{number}} annotatsiooni\",\n \"showZoomControls\": \"Näita suurendamisnuppe\",\n \"sidebarPanelsNavigation\": \"Külgpaneelide navigeerimine\",\n \"single\": \"Üksik\",\n \"startHere\": \"Alusta siit\",\n \"suggestSearch\": \"Otsi sellest dokumendist \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Sisukord\",\n \"theme\": \"Teema\",\n \"thumbnailList\": \"Pisipiltide loend\",\n \"thumbnailNavigation\": \"Pisipildid\",\n \"thumbnails\": \"Pisipildid\",\n \"toggleWindowSideBar\": \"külgpaneel\",\n \"totalCollections_one\": \"{{count}} kollektsioon\",\n \"totalCollections_other\": \"{{count}} kollektsiooni\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"totalManifests_other\": \"{{count}} manifesti\",\n \"tryAgain\": \"Proovi uuesti\",\n \"untitled\": \"[Pealkiri puudub]\",\n \"view\": \"Vaade\",\n \"viewWorkspaceConfiguration\": \"Vaata tööruumi seadistusi\",\n \"welcome\": \"Tere tulemast Miradori\",\n \"window\": \"Aken: {{label}}\",\n \"windowMenu\": \"Akna vaated ja pisipiltide kuvamine\",\n \"windowNavigation\": \"Akna navigeerimine\",\n \"windowPluginButtons\": \"Suvandid\",\n \"windowPluginMenu\": \"Akna suvandid\",\n \"workspace\": \"Tööruum\",\n \"workspaceFullScreen\": \"Täisekraan\",\n \"workspaceMenu\": \"Tööruumi sätted\",\n \"workspaceNavigation\": \"Tööruumi navigeerimine\",\n \"workspaceOptions\": \"Tööruumi valikud\",\n \"workspaceSelectionTitle\": \"Vali tööruumi tüüp\",\n \"zoomIn\": \"Suurenda sisse\",\n \"zoomOut\": \"Suurenda välja\",\n \"zoomReset\": \"Lähtesta suurendus\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"در بارهٔ پروژه Mirador\",\n \"aboutThisItem\": \"در بارهٔ این مورد\",\n \"addedFromUrl\": \"(از آدرس اینترنتی ازافه شده)\",\n \"addManifestUrl\": \"مکان منبع\",\n \"addManifestUrlHelp\": \"آدرس اینترنتی منبع IIIF \",\n \"addResource\": \"منبع را ازافه کن\",\n \"annotationCanvasLabel_1/1\": \"مورد: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"چپ: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"راست: [{{label}}]\",\n \"annotations\": \"حاشیه نویسی ها\",\n \"attribution\": \"نسبت دادن\",\n \"attributionTitle\": \"حقوق\",\n \"authenticationFailed\": \"تصدیق هویت ناموفق بود.\",\n \"authenticationRequired\": \"برای دسترسی کامل نیاز به احراز هویت\",\n \"backToResults\": \"بازگشت به نتایج\",\n \"book\": \"کتاب\",\n \"bottom\": \"پایان\",\n \"cancel\": \"لغو\",\n \"canvasIndex\": \"فهرست راهنما\",\n \"changeTheme\": \"تغیر زمینه\",\n \"clearSearch\": \"پاک کن\",\n \"close\": \"ببند\",\n \"closeAddResourceForm\": \"پرسش‌نامه‌ را ببند\",\n \"closeAddResourceMenu\": \"فهرست منابع را ببند\",\n \"closeCompanionWindow\": \"پانل را ببند\",\n \"closeWindow\": \"پنجره را ببند\",\n \"collapseSection\": \"بخش \\\"{{section}}\\\" را کوچک کنید\",\n \"collapseSidePanel\": \"نوار کناری را کوچک کن\",\n \"collection\": \"مجموعه\",\n \"continue\": \"ادامه\",\n \"copy\": \"کپی\",\n \"currentItem\": \"مورد فعلی\",\n \"currentItem_1/1\": \"مورد فعلی\",\n \"currentItem_1/2\": \"چپ\",\n \"currentItem_2/2\": \"راست\",\n \"dark\": \"زمینه تاریک\",\n \"digitizedView\": \"نمای دیجیتالی شده\",\n \"dismiss\": \"مرخص کن\",\n \"displayNoAnnotations\": \"هیچ کدام را برجسته نکنید\",\n \"downloadExport\": \"صدور فضای کاری\",\n \"downloadExportWorkspace\": \"صدور فضای کاری\",\n \"elastic\": \"کشدار\",\n \"elasticDescription\": \"پنجره ها را آزادانه در یک فضای کاری نامحدود حرکت دهید و اندازه کنید. پنجره ها می تواند همپوشانی داشته باشند.\",\n \"emptyResourceList\": \"فهرست منابع شما خالی است\",\n \"error\": \"خطا\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"خطایی اتفاق افتاد\",\n \"exitFullScreen\": \"خروج از تمام صفحه\",\n \"expandSection\": \"بخش \\\"{{section}}\\\" را باز کنید\",\n \"expandSidePanel\": \"نوار کناری را باز کن\",\n \"exportCopied\": \"پیکربندی فضای کاری در کلیپ بورد شما کپی شد\",\n \"fetchManifest\": \"اضافه کن\",\n \"fullScreen\": \"تمام صفحه\",\n \"gallery\": \"آلبوم عکس\",\n \"hideZoomControls\": \"کنترل های بزرگنما را مخفی کنید\",\n \"highlightAllAnnotations\": \"همه را برجسته کنید\",\n \"iiif_homepage\": \"در باره ی این منبع\",\n \"iiif_manifest\": \"بیانیه ی IIIF\",\n \"iiif_related\": \"مربوط\",\n \"iiif_renderings\": \"فرمت های جایگزین\",\n \"iiif_seeAlso\": \"همچنین ببینید\",\n \"import\": \"وارد كنید\",\n \"importWorkspace\": \"فضای کاری را وارد كنید\",\n \"importWorkspaceHint\": \"پیکربندی Mirador 4 را برای وارد کردن جای‌گذاری کنید\",\n \"item\": \"مورد: {{label}}\",\n \"itemList\": \"فهرست موارد\",\n \"jsError\": \"جزییات فنی\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"زبان\",\n \"layer_hide\": \"لایه را پنهان کنید\",\n \"layer_move\": \"لایه را حرکت دهید\",\n \"layer_opacity\": \"لایه کدورت\",\n \"layer_show\": \"نمایش لایه\",\n \"layers\": \"لایه ها\",\n \"light\": \"زمینه رشن\",\n \"links\": \"پیوندها\",\n \"listAllOpenWindows\": \"پرش به پنجره\",\n \"login\": \"وارد به سیستم\",\n \"logout\": \"خروج از سیستم\",\n \"manifestError\": \"منبع اضافه نمیشود :\",\n \"maximizeWindow\": \"پنجره را به حداکثر برسانید\",\n \"minimizeWindow\": \"پنجره را به حداقل برسانید\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"منابعی Mirador\",\n \"miradorViewer\": \"بیننده Mirador\",\n \"more\": \"بیشتر...\",\n \"moreResults\": \"نتایج بیشتر\",\n \"mosaic\": \"موزائیک\",\n \"mosaicDescription\": \"جابجایی و اندازه پنجره ها نسبت به یکدیگر، در چارچوب قابل مشاهده.\",\n \"moveCompanionWindowToBottom\": \"حرکت به سمت پایین\",\n \"moveCompanionWindowToRight\": \"حرکت به سمت راست\",\n \"multipartCollection\": \"مجموعه چند قسمتی\",\n \"nextCanvas\": \"مورد بعدی\",\n \"noItemSelected\": \"هیچ موردی انتخاب نشده است\",\n \"numItems_one\": \"{{number}} مورد\",\n \"numItems_other\": \"{{number}} موارد\",\n \"off\": \"خاموش\",\n \"openCompanionWindow_annotations\": \"حاشیه نویسی ها\",\n \"openCompanionWindow_attribution\": \"حقوق\",\n \"openCompanionWindow_canvas\": \"فهرست راهنما\",\n \"openCompanionWindow_info\": \"اطلاعات\",\n \"openCompanionWindow_layers\": \"لایه ها\",\n \"openCompanionWindow_search\": \"جستجو\",\n \"openInCompanionWindow\": \"در پنل جداگانه باز کن\",\n \"openWindows\": \"پنجره های باز\",\n \"pagination\": \"{{total}} از {{current}}\",\n \"position\": \"موقعیت\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"مورد قبلی\",\n \"related\": \"مربوط\",\n \"resource\": \"منبع\",\n \"retry\": \"امتحان دوباره\",\n \"right\": \"حقوق\",\n \"rights\": \"مجوز\",\n \"scroll\": \"پیمایش\",\n \"searchInputLabel\": \"عبارات جستجو\",\n \"searchNextResult\": \"نتیجه بعدی\",\n \"searchNoResults\": \"نتیجه ای پیدا نشد\",\n \"searchPreviousResult\": \"نتیجه قبلی\",\n \"searchResultsRemaining\": \"{{numLeft}} باقی مانده\",\n \"searchSubmitAria\": \"ارسال جستجو\",\n \"searchTitle\": \"جستجو\",\n \"selectWorkspaceMenu\": \"نوع فضای کار را انتخاب کنید\",\n \"showCollection\": \"نمایش مجموعه\",\n \"showingNumAnnotations_one\": \"نمایش {{number}} حاشیه نویسی\",\n \"showingNumAnnotations_other\": \"نمایش {{number}} حاشیه نویسی\",\n \"showZoomControls\": \"نمایش کنترل های بزرگنمایی\",\n \"sidebarPanelsNavigation\": \"پانل های ناوبری نوار کناری\",\n \"single\": \"واحد\",\n \"startHere\": \"از اینجا شروع کنید\",\n \"suggestSearch\": \"این سند را برای \\\"{{ query }}\\\" جستجوی کنید\",\n \"tableOfContentsList\": \"فهرست مطالب\",\n \"theme\": \"زمینه\",\n \"thumbnailList\": \"فهرست تصاویر بندانگشتی\",\n \"thumbnailNavigation\": \"تصاویر بندانگشتی\",\n \"thumbnails\": \"تصاویر بندانگشتی\",\n \"toggleWindowSideBar\": \"نوار کناری را تغییر دهید\",\n \"totalCollections_one\": \"{{count}} مجموعه\",\n \"totalCollections_other\": \"{{count}} مجموعات\",\n \"totalManifests_one\": \"{{count}} بیانیه\",\n \"totalManifests_other\": \"{{count}} بیانیه ها\",\n \"tryAgain\": \"دوباره امتحان کنید\",\n \"untitled\": \"[بدون عنوان]\",\n \"view\": \"مشاهده\",\n \"viewWorkspaceConfiguration\": \"مشاهده پیکربندی فضای کاری\",\n \"welcome\": \"به Mirador خوش آمدید\",\n \"window\": \"پنجره: {{label}}\",\n \"windowMenu\": \"نماهای پنجره و نمایش تصاویر کوچک\",\n \"windowNavigation\": \"جهت یابی پنجره\",\n \"windowPluginButtons\": \"گزینه ها\",\n \"windowPluginMenu\": \"گزینه های پنجره\",\n \"workspace\": \"فضای کار\",\n \"workspaceFullScreen\": \"تمام صفحه\",\n \"workspaceMenu\": \"تنظیمات فضای کاری\",\n \"workspaceNavigation\": \"جهت یابی فضای کاری\",\n \"workspaceOptions\": \"گزینه های فضای کاری\",\n \"workspaceSelectionTitle\": \"نوع فضای کاری را انتخاب کنید\",\n \"zoomIn\": \"بزرگنمایی\",\n \"zoomOut\": \"کوچک نمایی\",\n \"zoomReset\": \" تنظیم بزرگنما\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"关于Mirador项目\",\n \"aboutThisItem\": \"有关此条目\",\n \"addedFromUrl\": \"(从URL添加)\",\n \"addManifestUrl\": \"来源\",\n \"addManifestUrlHelp\": \"IIIF资源的URL\",\n \"addResource\": \"添加资源\",\n \"annotationCanvasLabel_1/1\": \"条目: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"左方: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"右方: [{{label}}]\",\n \"annotations\": \"标注\",\n \"attribution\": \"著作权\",\n \"attributionTitle\": \"著作权\",\n \"authenticationFailed\": \"认证失败。\",\n \"authenticationRequired\": \"完全访问需要认证\",\n \"backToResults\": \"返回到结果\",\n \"book\": \"书籍\",\n \"bottom\": \"下方\",\n \"cancel\": \"取消\",\n \"canvasIndex\": \"索引\",\n \"changeTheme\": \"变更背景主题\",\n \"clearSearch\": \"清除\",\n \"close\": \"关闭\",\n \"closeAddResourceForm\": \"关闭表格\",\n \"closeAddResourceMenu\": \"关闭资源列表\",\n \"closeCompanionWindow\": \"关闭附属窗口\",\n \"closeWindow\": \"关闭窗口\",\n \"collapseSection\": \"关闭{{section}}分页\",\n \"collapseSidePanel\": \"关闭边栏\",\n \"collection\": \"集合\",\n \"continue\": \"继续\",\n \"copy\": \"复制\",\n \"currentItem\": \"当前条目\",\n \"currentItem_1/1\": \"当前条目\",\n \"currentItem_1/2\": \"左方\",\n \"currentItem_2/2\": \"右方\",\n \"dark\": \"暗色主题\",\n \"digitizedView\": \"数字视图\",\n \"dismiss\": \"关闭信息\",\n \"displayNoAnnotations\": \"不高亮\",\n \"downloadExport\": \"导出桌面排版\",\n \"downloadExportWorkspace\": \"导出桌面排版\",\n \"elastic\": \"弹性\",\n \"elasticDescription\": \"在桌面上自由摆放窗口\",\n \"emptyResourceList\": \"空资源列表\",\n \"error\": \"错误\",\n \"errorDialogConfirm\": \"确定\",\n \"errorDialogTitle\": \"发生错误\",\n \"exitFullScreen\": \"退出全屏\",\n \"expandSection\": \"开启{{section}}分页\",\n \"expandSidePanel\": \"开启边栏\",\n \"exportCopied\": \"工作区配置被复制到你的剪贴板上了\",\n \"fetchManifest\": \"添加\",\n \"fullScreen\": \"全屏\",\n \"gallery\": \"画廊\",\n \"hideZoomControls\": \"隐藏缩放选项\",\n \"highlightAllAnnotations\": \"高亮所有标注\",\n \"iiif_homepage\": \"主页\",\n \"iiif_manifest\": \"IIIF清单\",\n \"iiif_renderings\": \"其他格式\",\n \"iiif_seeAlso\": \"另见\",\n \"import\": \"导入\",\n \"importWorkspace\": \"导入桌面排版\",\n \"importWorkspaceHint\": \"在此贴上Mirador 4排版设定码\",\n \"item\": \"条目: {{label}}\",\n \"itemList\": \"标题列表\",\n \"jsError\": \"技术细节\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"语言\",\n \"layer_hide\": \"隐藏图层\",\n \"layer_move\": \"移动图层\",\n \"layer_opacity\": \"图层不透明度\",\n \"layer_show\": \"显示图层\",\n \"layers\": \"图层\",\n \"light\": \"亮色主题\",\n \"links\": \"链接\",\n \"listAllOpenWindows\": \"切换至窗口\",\n \"login\": \"登入\",\n \"logout\": \"登出\",\n \"manifestError\": \"无法增添资源:\",\n \"maximizeWindow\": \"窗口最大化\",\n \"minimizeWindow\": \"窗口最小化\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador资源\",\n \"miradorViewer\": \"Mirador阅览器\",\n \"more\": \"更多...\",\n \"moreResults\": \"更多结果\",\n \"mosaic\": \"马赛克\",\n \"mosaicDescription\": \"在桌面上以格状方式排列窗口\",\n \"moveCompanionWindowToBottom\": \"移至下方\",\n \"moveCompanionWindowToRight\": \"移至右方\",\n \"multipartCollection\": \"多卷集合\",\n \"nextCanvas\": \"下一页\",\n \"noItemSelected\": \"没有条目被选中\",\n \"numItems_one\": \"{{number}} 项条目\",\n \"numItems_other\": \"{{number}} 项条目\",\n \"off\": \"关闭\",\n \"openCompanionWindow_annotations\": \"标注\",\n \"openCompanionWindow_attribution\": \"著作权\",\n \"openCompanionWindow_canvas\": \"目录\",\n \"openCompanionWindow_info\": \"资讯\",\n \"openCompanionWindow_layers\": \"图层\",\n \"openCompanionWindow_search\": \"搜索\",\n \"openInCompanionWindow\": \"移至新附属窗口\",\n \"openWindows\": \"当前窗口\",\n \"pagination\": \"{{current}} / {{total}}\",\n \"position\": \"位置\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"上一页\",\n \"related\": \"相关信息\",\n \"resource\": \"资源\",\n \"retry\": \"重试\",\n \"right\": \"右方\",\n \"rights\": \"版权\",\n \"scroll\": \"滚动\",\n \"searchInputLabel\": \"搜索关键字\",\n \"searchNextResult\": \"下一个结果\",\n \"searchNoResults\": \"没有搜索到结果\",\n \"searchPreviousResult\": \"前一个结果\",\n \"searchResultsRemaining\": \"{{numLeft}}剩余\",\n \"searchSubmitAria\": \"提交搜索\",\n \"searchTitle\": \"搜索\",\n \"selectWorkspaceMenu\": \"选择桌面排版方式\",\n \"showCollection\": \"显示集合\",\n \"showingNumAnnotations_one\": \"显示 {{number}} 项标注\",\n \"showingNumAnnotations_other\": \"显示 {{number}} 项标注\",\n \"showZoomControls\": \"显示缩放选项\",\n \"sidebarPanelsNavigation\": \"切换边栏\",\n \"single\": \"单项\",\n \"startHere\": \"按此开始\",\n \"suggestSearch\": \"搜索本文档以\\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"目录\",\n \"theme\": \"背景主题\",\n \"thumbnailList\": \"缩略图列表\",\n \"thumbnailNavigation\": \"缩略图\",\n \"thumbnails\": \"缩略图\",\n \"toggleWindowSideBar\": \"切换边栏开关\",\n \"totalCollections_one\": \"{{count}} 集合\",\n \"totalCollections_other\": \"{{count}} 集合\",\n \"totalManifests_one\": \"{{count}} 清单\",\n \"totalManifests_other\": \"{{count}} 清单\",\n \"tryAgain\": \"请重试\",\n \"untitled\": \"[无标题]\",\n \"view\": \"条目排列方式\",\n \"viewWorkspaceConfiguration\": \"查看工作区配置\",\n \"welcome\": \"欢迎使用Mirador\",\n \"window\": \"窗口: {{label}}\",\n \"windowMenu\": \"窗口视图 & 缩略图显示\",\n \"windowNavigation\": \"切换窗口\",\n \"windowPluginButtons\": \"选项\",\n \"windowPluginMenu\": \"窗口选项\",\n \"workspace\": \"桌面\",\n \"workspaceFullScreen\": \"全屏\",\n \"workspaceMenu\": \"桌面设定\",\n \"workspaceNavigation\": \"工作区导航\",\n \"workspaceOptions\": \"桌面选项\",\n \"workspaceSelectionTitle\": \"选择桌面排版方式\",\n \"zoomIn\": \"放大\",\n \"zoomOut\": \"缩小\",\n \"zoomReset\": \"重设缩放\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"關於Mirador項目\",\n \"aboutThisItem\": \"有關此物件\",\n \"addedFromUrl\": \"(從URL添加)\",\n \"addManifestUrl\": \"來源\",\n \"addManifestUrlHelp\": \"IIIF資源的URL\",\n \"addResource\": \"添加資源\",\n \"annotationCanvasLabel_1/1\": \"物件: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"左方: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"右方: [{{label}}]\",\n \"annotations\": \"標註\",\n \"attribution\": \"著作權\",\n \"attributionTitle\": \"著作權\",\n \"authenticationFailed\": \"認證失敗。\",\n \"authenticationRequired\": \"完全訪問需要認證\",\n \"backToResults\": \"返回到結果\",\n \"book\": \"書籍\",\n \"bottom\": \"下方\",\n \"cancel\": \"取消\",\n \"canvasIndex\": \"索引\",\n \"changeTheme\": \"變更佈景主題\",\n \"clearSearch\": \"清除\",\n \"close\": \"關閉\",\n \"closeAddResourceForm\": \"關閉表格\",\n \"closeAddResourceMenu\": \"關閉資源列表\",\n \"closeCompanionWindow\": \"關閉附屬視窗\",\n \"closeWindow\": \"關閉視窗\",\n \"collapseSection\": \"關閉{{section}}分頁\",\n \"collapseSidePanel\": \"關閉邊欄\",\n \"collection\": \"集合\",\n \"continue\": \"繼續\",\n \"copy\": \"複製\",\n \"currentItem\": \"目前物件\",\n \"currentItem_1/1\": \"目前物件\",\n \"currentItem_1/2\": \"左方\",\n \"currentItem_2/2\": \"右方\",\n \"dark\": \"暗色主題\",\n \"digitizedView\": \"數字視圖\",\n \"dismiss\": \"關閉信息\",\n \"displayNoAnnotations\": \"不高亮\",\n \"downloadExport\": \"滙出桌面排版\",\n \"downloadExportWorkspace\": \"滙出桌面排版\",\n \"elastic\": \"彈性\",\n \"elasticDescription\": \"在桌面上自由擺放視窗\",\n \"emptyResourceList\": \"資源列表沒有物件\",\n \"error\": \"錯誤\",\n \"errorDialogConfirm\": \"確定\",\n \"errorDialogTitle\": \"發生錯誤\",\n \"exitFullScreen\": \"退出全螢幕\",\n \"expandSection\": \"開啟{{section}}分頁\",\n \"expandSidePanel\": \"開啟邊欄\",\n \"exportCopied\": \"工作區配置被複製到你的剪貼板上了\",\n \"fetchManifest\": \"添加\",\n \"fullScreen\": \"全螢幕\",\n \"gallery\": \"矩列\",\n \"hideZoomControls\": \"隱藏縮放選項\",\n \"highlightAllAnnotations\": \"高亮所有標註\",\n \"iiif_homepage\": \"有關此資源\",\n \"iiif_manifest\": \"IIIF清單\",\n \"iiif_renderings\": \"其他格式\",\n \"iiif_seeAlso\": \"另見\",\n \"import\": \"滙入\",\n \"importWorkspace\": \"滙入桌面排版\",\n \"importWorkspaceHint\": \"在此貼上Mirador 4排版設定碼\",\n \"item\": \"物件: {{label}}\",\n \"itemList\": \"標題列表\",\n \"jsError\": \"技術細節\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"語言\",\n \"layer_hide\": \"隱藏圖層\",\n \"layer_move\": \"移動圖層\",\n \"layer_opacity\": \"圖層不透明度\",\n \"layer_show\": \"顯示圖層\",\n \"layers\": \"圖層\",\n \"light\": \"亮色主題\",\n \"links\": \"連結\",\n \"listAllOpenWindows\": \"切換至視窗\",\n \"login\": \"登入\",\n \"logout\": \"登出\",\n \"manifestError\": \"無法增添資源:\",\n \"maximizeWindow\": \"視窗最大化\",\n \"minimizeWindow\": \"視窗最小化\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador資源\",\n \"miradorViewer\": \"Mirador閱覽器\",\n \"more\": \"更多...\",\n \"moreResults\": \"更多結果\",\n \"mosaic\": \"馬賽克\",\n \"mosaicDescription\": \"在桌面上以格狀方式排列視窗\",\n \"moveCompanionWindowToBottom\": \"移至下方\",\n \"moveCompanionWindowToRight\": \"移至右方\",\n \"multipartCollection\": \"多卷集合\",\n \"nextCanvas\": \"下一頁\",\n \"noItemSelected\": \"沒有物件被選中\",\n \"numItems_one\": \"{{number}} 項物件\",\n \"numItems_other\": \"{{number}} 項物件\",\n \"off\": \"關閉\",\n \"openCompanionWindow_annotations\": \"標註\",\n \"openCompanionWindow_attribution\": \"著作權\",\n \"openCompanionWindow_canvas\": \"目錄\",\n \"openCompanionWindow_info\": \"資訊\",\n \"openCompanionWindow_layers\": \"圖層\",\n \"openCompanionWindow_search\": \"搜索\",\n \"openInCompanionWindow\": \"移至新附屬視窗\",\n \"openWindows\": \"現有視窗\",\n \"pagination\": \"{{current}} / {{total}}\",\n \"position\": \"位置\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"上一頁\",\n \"related\": \"相關資訊\",\n \"resource\": \"資源\",\n \"retry\": \"重試\",\n \"right\": \"右方\",\n \"rights\": \"版權\",\n \"scroll\": \"滾動\",\n \"searchInputLabel\": \"搜索關鍵字\",\n \"searchNextResult\": \"下一個結果\",\n \"searchNoResults\": \"沒有搜索到結果\",\n \"searchPreviousResult\": \"前一個結果\",\n \"searchResultsRemaining\": \"{{numLeft}}剩餘\",\n \"searchSubmitAria\": \"提交搜索\",\n \"searchTitle\": \"搜索\",\n \"selectWorkspaceMenu\": \"選擇桌面排版方式\",\n \"showCollection\": \"顯示集合\",\n \"showingNumAnnotations_one\": \"顯示 {{number}} 項標註\",\n \"showingNumAnnotations_other\": \"顯示 {{number}} 項標註\",\n \"showZoomControls\": \"顯示縮放選項\",\n \"sidebarPanelsNavigation\": \"切換邊欄\",\n \"single\": \"單項\",\n \"startHere\": \"按此開始\",\n \"suggestSearch\": \"搜索本文檔以\\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"目錄\",\n \"theme\": \"佈景主題\",\n \"thumbnailList\": \"縮略圖列表\",\n \"thumbnailNavigation\": \"縮略圖\",\n \"thumbnails\": \"縮略圖\",\n \"toggleWindowSideBar\": \"切換邊欄開關\",\n \"totalCollections_one\": \"{{count}} 集合\",\n \"totalCollections_other\": \"{{count}} 集合\",\n \"totalManifests_one\": \"{{count}} 清單\",\n \"totalManifests_other\": \"{{count}} 清單\",\n \"tryAgain\": \"請重試\",\n \"untitled\": \"[無標題]\",\n \"view\": \"物件排列方式\",\n \"viewWorkspaceConfiguration\": \"查看工作區配置\",\n \"welcome\": \"歡迎使用Mirador\",\n \"window\": \"視窗: {{label}}\",\n \"windowMenu\": \"視窗視圖 & 縮略圖顯示\",\n \"windowNavigation\": \"切換視窗\",\n \"windowPluginButtons\": \"選項\",\n \"windowPluginMenu\": \"視窗選項\",\n \"workspace\": \"桌面\",\n \"workspaceFullScreen\": \"全螢幕\",\n \"workspaceMenu\": \"桌面設定\",\n \"workspaceNavigation\": \"工作區導航\",\n \"workspaceOptions\": \"桌面選項\",\n \"workspaceSelectionTitle\": \"選擇桌面排版方式\",\n \"zoomIn\": \"放大\",\n \"zoomOut\": \"縮小\",\n \"zoomReset\": \"重設縮放\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"A propos du projet Mirador\",\n \"aboutThisItem\": \"Informations\",\n \"addedFromUrl\": \"(Ajouté depuis une URL)\",\n \"addManifestUrl\": \"Emplacement de la ressource\",\n \"addManifestUrlHelp\": \"Coller ici l'URL de la ressource IIIF\",\n \"addResource\": \"Ajouter une ressource\",\n \"annotationCanvasLabel_1/1\": \"Item : [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Gauche : [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Droite : [{{label}}]\",\n \"annotations\": \"Annotations\",\n \"attribution\": \"Attribution\",\n \"attributionTitle\": \"Droits\",\n \"authenticationFailed\": \"L'authentification a échoué.\",\n \"authenticationRequired\": \"Authentification requise pour un accès complet\",\n \"backToResults\": \"Retour aux résultats\",\n \"book\": \"Livre\",\n \"bottom\": \"Bas\",\n \"cancel\": \"Annuler\",\n \"canvasIndex\": \"Index\",\n \"changeTheme\": \"Changer le thème\",\n \"clearSearch\": \"effacer\",\n \"closeAddResourceForm\": \"Fermer le panneau\",\n \"closeAddResourceMenu\": \"Fermer la liste des ressources\",\n \"closeCompanionWindow\": \"Fermer le panneau\",\n \"closeWindow\": \"Fermer cette fenêtre\",\n \"collapseSection\": \"Replier la section \\\"{{section}}\\\"\",\n \"collapseSidePanel\": \"Replier le panneau\",\n \"continue\": \"Continuer\",\n \"copy\": \"Copier\",\n \"currentItem\": \"Image courante\",\n \"currentItem_1/1\": \"Image courante\",\n \"currentItem_1/2\": \"Gauche\",\n \"currentItem_2/2\": \"Droite\",\n \"dark\": \"Thème sombre\",\n \"digitizedView\": \"Vue de l'objet numérique\",\n \"dismiss\": \"Rejeter\",\n \"displayNoAnnotations\": \"Masquer tout\",\n \"downloadExport\": \"Exporter l'espace de travail\",\n \"downloadExportWorkspace\": \"Exporter l'espace de travail\",\n \"elastic\": \"Elastique\",\n \"elasticDescription\": \"Déplacer et redimensionner librement les fenêtres dans un espace de travail non limité par l'écran. Les fenêtres peuvent être superposées.\",\n \"emptyResourceList\": \"Votre liste de ressource est vide\",\n \"error\": \"Erreur\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Une erreur est survenue\",\n \"exitFullScreen\": \"Quitter le plein écran\",\n \"expandSection\": \"Déplier la section \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"Déplier le panneau\",\n \"exportCopied\": \"La configuration de l'espace de travail a été copiée dans votre presse-papier\",\n \"fetchManifest\": \"Ajouter\",\n \"fullScreen\": \"Plein écran\",\n \"gallery\": \"Galerie\",\n \"hideZoomControls\": \"Désactiver les commandes de zoom\",\n \"highlightAllAnnotations\": \"Afficher tout\",\n \"iiif_homepage\": \"A propos de cette ressource\",\n \"iiif_manifest\": \"Manifeste IIIF\",\n \"iiif_renderings\": \"Formats alternatifs\",\n \"iiif_seeAlso\": \"Voir aussi\",\n \"import\": \"Importer\",\n \"importWorkspace\": \"Importer un espace de travail\",\n \"importWorkspaceHint\": \"Insérer une configuration Mirador 4 à importer\",\n \"item\": \"Item : {{label}}\",\n \"itemList\": \"Liste compacte\",\n \"jsError\": \"Détails techniques\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Langue\",\n \"layer_hide\": \"Masquer le calque\",\n \"layer_move\": \"Déplacer le calque\",\n \"layer_opacity\": \"Opacité du calque\",\n \"layer_show\": \"Afficher le calque\",\n \"layers\": \"Calques\",\n \"light\": \"Thème clair\",\n \"links\": \"Liens\",\n \"listAllOpenWindows\": \"Lister les fenêtres\",\n \"login\": \"Se connecter\",\n \"logout\": \"Se déconnecter\",\n \"manifestError\": \"Cette ressource ne peut pas être ajoutée :\",\n \"maximizeWindow\": \"Agrandir cette fenêtre\",\n \"minimizeWindow\": \"Réduire cette fenêtre\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Ressources Mirador\",\n \"miradorViewer\": \"Visualiseur Mirador\",\n \"more\": \"plus...\",\n \"moreResults\": \"Plus de résultats\",\n \"mosaic\": \"Mosaïque\",\n \"mosaicDescription\": \"Déplacer et redimensionner les fenêtres les unes par rapport aux autres dans l'espace disponible sur l'écran\",\n \"moveCompanionWindowToBottom\": \"Déplacer en bas\",\n \"moveCompanionWindowToRight\": \"Déplacer à droite\",\n \"nextCanvas\": \"Suivant\",\n \"noItemSelected\": \"Aucun élément sélectionné\",\n \"numItems_one\": \"{{number}} image\",\n \"numItems_other\": \"{{number}} images\",\n \"off\": \"aucun\",\n \"openCompanionWindow_annotations\": \"Annotations\",\n \"openCompanionWindow_attribution\": \"Droits\",\n \"openCompanionWindow_canvas\": \"Index\",\n \"openCompanionWindow_info\": \"Informations\",\n \"openCompanionWindow_layers\": \"Calques\",\n \"openCompanionWindow_search\": \"Rechercher\",\n \"openInCompanionWindow\": \"Ouvrir dans un panneau séparé\",\n \"openWindows\": \"Fenêtres ouvertes\",\n \"pagination\": \"{{current}} sur {{total}}\",\n \"position\": \"Position\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Précédent\",\n \"related\": \"En relation\",\n \"resource\": \"Ressource\",\n \"retry\": \"Réessayer\",\n \"right\": \"Droite\",\n \"rights\": \"Licence\",\n \"scroll\": \"Défilement horizontal\",\n \"searchInputLabel\": \"Chercher un mot\",\n \"searchNextResult\": \"Résultat suivant\",\n \"searchNoResults\": \"Aucun résultat trouvé\",\n \"searchPreviousResult\": \"Résultat précédent\",\n \"searchSubmitAria\": \"Lancer la recherche\",\n \"searchTitle\": \"Rechercher\",\n \"selectWorkspaceMenu\": \"Changer de type d'espace de travail\",\n \"showCollection\": \"Voir la collection\",\n \"showingNumAnnotations_one\": \"{{number}} annotation affichée\",\n \"showingNumAnnotations_other\": \"{{number}} annotations affichées\",\n \"showZoomControls\": \"Activer les commandes de zoom\",\n \"sidebarPanelsNavigation\": \"Navigation dans les panneaux latéraux\",\n \"single\": \"Simple\",\n \"startHere\": \"Commencer ici\",\n \"suggestSearch\": \"Rechercher \\\"{{ query }}\\\" dans ce document\",\n \"tableOfContentsList\": \"Sommaire\",\n \"theme\": \"Thème\",\n \"thumbnailList\": \"Liste des vignettes\",\n \"thumbnailNavigation\": \"Vignettes\",\n \"thumbnails\": \"Afficher les vignettes\",\n \"toggleWindowSideBar\": \"Afficher le menu latéral\",\n \"totalCollections_one\": \"{{count}} collection\",\n \"totalCollections_other\": \"{{count}} collections\",\n \"totalManifests_one\": \"{{count}} manifeste\",\n \"totalManifests_other\": \"{{count}} manifestes\",\n \"tryAgain\": \"Essayer à nouveau\",\n \"untitled\": \"[Sans titre]\",\n \"view\": \"Voir les images en mode\",\n \"welcome\": \"Bienvenue dans Mirador\",\n \"window\": \"Fenêtre : {{label}}\",\n \"windowMenu\": \"Options de fenêtre\",\n \"windowNavigation\": \"Navigation dans les fenêtres\",\n \"windowPluginButtons\": \"Options\",\n \"windowPluginMenu\": \"Autres options et outils\",\n \"workspace\": \"Espace de travail\",\n \"workspaceFullScreen\": \"Plein écran\",\n \"workspaceMenu\": \"Réglages de l'espace de travail\",\n \"workspaceNavigation\": \"Menu de l'espace de travail\",\n \"workspaceOptions\": \"Options de l'espace de travail\",\n \"workspaceSelectionTitle\": \"Sélectionner un type d'espace de travail\",\n \"zoomIn\": \"Zoom avant\",\n \"zoomOut\": \"Zoom arrière\",\n \"zoomReset\": \"Réinitialiser le zoom\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"O Projektu Mirador\",\n \"aboutThisItem\": \"O ovom zapisu\",\n \"addedFromUrl\": \"(Dodano s URL-a)\",\n \"addManifestUrl\": \"Lokacija resursa\",\n \"addManifestUrlHelp\": \"URL IIIF resursa\",\n \"addResource\": \"Dodaj resurs\",\n \"annotationCanvasLabel_1/1\": \"Stavka: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Lijevo: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Desno: [{{label}}]\",\n \"annotations\": \"Anotacije\",\n \"attribution\": \"Pripisivanje\",\n \"attributionTitle\": \"Prava\",\n \"authenticationFailed\": \"Autentifikacija nije uspjela\",\n \"authenticationRequired\": \"Potrebna je autentifikacija za potpuni pristup\",\n \"backToResults\": \"Povratak na rezultate\",\n \"book\": \"Knjiga\",\n \"bottom\": \"Dno\",\n \"cancel\": \"Otkaži\",\n \"canvasIndex\": \"Indeks\",\n \"changeTheme\": \"Promijeni temu\",\n \"clearSearch\": \"očisti\",\n \"close\": \"Zatvori\",\n \"closeAddResourceForm\": \"Zatvori obrazac\",\n \"closeAddResourceMenu\": \"Zatvori popis resursa\",\n \"closeCompanionWindow\": \"Zatvori ploču\",\n \"closeWindow\": \"Zatvori prozor\",\n \"collapseSection\": \"Sažmi \\\"{{section}}\\\" odjeljak\",\n \"collapseSidePanel\": \"Sklopi bočnu traku\",\n \"collection\": \"Kolekcija\",\n \"continue\": \"Nastavi\",\n \"copy\": \"Kopiraj\",\n \"currentItem\": \"Trenutna stavka\",\n \"currentItem_1/1\": \"Trenutna stavka\",\n \"currentItem_1/2\": \"Lijevo\",\n \"currentItem_2/2\": \"Desno\",\n \"dark\": \"Tamna tema\",\n \"digitizedView\": \"Digitalizirani prikaz\",\n \"dismiss\": \"Odbaci\",\n \"displayNoAnnotations\": \"Istaknite ništa\",\n \"downloadExport\": \"Izvezi radni prostor\",\n \"downloadExportWorkspace\": \"Izvezi radni prostor\",\n \"elastic\": \"Elastičan\",\n \"elasticDescription\": \"Premještajte i mijenjajte veličinu prozora slobodno u neograničenom radnom prostoru. Prozori se mogu preklapati.\",\n \"emptyResourceList\": \"Vaš popis resursa je prazan\",\n \"error\": \"Greška\",\n \"errorDialogConfirm\": \"U redu\",\n \"errorDialogTitle\": \"Došlo je do greške\",\n \"exitFullScreen\": \"Izađi iz punog zaslona\",\n \"expandSection\": \"Proširi odjeljak \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"Proširi bočnu traku\",\n \"exportCopied\": \"Konfiguracija radnog prostora kopirana je u vaš međuspremnik\",\n \"fetchManifest\": \"Dodaj\",\n \"fullScreen\": \"Cijeli ekran\",\n \"gallery\": \"Galerija\",\n \"hideZoomControls\": \"Sakrij kontrole zuma\",\n \"highlightAllAnnotations\": \"Istakni sve\",\n \"iiif_homepage\": \"O ovom resursu\",\n \"iiif_manifest\": \"IIIF manifest\",\n \"iiif_related\": \"Srodno\",\n \"iiif_renderings\": \"Alternativni formati\",\n \"iiif_seeAlso\": \"Vidi također\",\n \"import\": \"Uvoz\",\n \"importWorkspace\": \"Uvezi radni prostor\",\n \"importWorkspaceHint\": \"Zalijepite konfiguraciju Mirador 4 koju treba uvesti\",\n \"item\": \"Stavka: {{label}}\",\n \"itemList\": \"Popis stavki\",\n \"jsError\": \"Tehnički detalji\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Jezik\",\n \"layer_hide\": \"Sakrij sloj\",\n \"layer_move\": \"Premjesti sloj\",\n \"layer_opacity\": \"Prozirnost sloja\",\n \"layer_show\": \"Prikaži sloj\",\n \"layers\": \"Slojevi\",\n \"light\": \"Svijetla tema\",\n \"links\": \"Poveznice\",\n \"listAllOpenWindows\": \"Skoči do prozora\",\n \"login\": \"Prijavi se\",\n \"logout\": \"Odjavi se\",\n \"manifestError\": \"Resurs se ne može dodati\",\n \"maximizeWindow\": \"Maksimiziraj prozor\",\n \"minimizeWindow\": \"Minimiziraj prozor\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador resursi\",\n \"miradorViewer\": \"Preglednik Mirador\",\n \"more\": \"još...\",\n \"moreResults\": \"Više rezultata\",\n \"mosaic\": \"Mozaik\",\n \"mosaicDescription\": \"Pomičite i mijenjajte veličinu prozora u odnosu jedan prema drugom, unutar vidljivog okvira.\",\n \"moveCompanionWindowToBottom\": \"Pomakni se na dno\",\n \"moveCompanionWindowToRight\": \"Pomakni se udesno\",\n \"multipartCollection\": \"Višedijelna zbirka\",\n \"nextCanvas\": \"Sljedeća stavka\",\n \"noItemSelected\": \"Nijedna stavka nije odabrana\",\n \"numItems_one\": \"{{number}} predmet\",\n \"numItems_other\": \"{{number}} artikala\",\n \"off\": \"Isključeno\",\n \"openCompanionWindow_annotations\": \"Bilješke\",\n \"openCompanionWindow_attribution\": \"Prava\",\n \"openCompanionWindow_canvas\": \"Indeks\",\n \"openCompanionWindow_info\": \"Informacija\",\n \"openCompanionWindow_layers\": \"Slojevi\",\n \"openCompanionWindow_search\": \"Pretraživanje\",\n \"openInCompanionWindow\": \"Otvori u zasebnom panelu\",\n \"openWindows\": \"Trenutno otvoreni prozori\",\n \"pagination\": \"{{current}} od {{total}}\",\n \"position\": \"Pozicija\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Prethodna stavka\",\n \"related\": \"Srodno\",\n \"resource\": \"Resurs\",\n \"retry\": \"Pokušaj ponovno\",\n \"right\": \"Desno\",\n \"rights\": \"Licenca\",\n \"scroll\": \"Pomakni\",\n \"searchInputLabel\": \"pojmovima pretraživanja\",\n \"searchNextResult\": \"Sljedeći rezultat\",\n \"searchNoResults\": \"Nema rezultata\",\n \"searchPreviousResult\": \"Prethodni rezultat\",\n \"searchResultsRemaining\": \"Preostalo je {{numLeft}}\",\n \"searchSubmitAria\": \"Podnesi pretragu\",\n \"searchTitle\": \"Pretraživanje\",\n \"selectWorkspaceMenu\": \"Odaberite vrstu radnog prostora\",\n \"showCollection\": \"Prikaži kolekciju\",\n \"showingNumAnnotations_one\": \"Prikazivanje {{number}} bilješke\",\n \"showingNumAnnotations_other\": \"Prikazivanje {{number}} bilješki\",\n \"showZoomControls\": \"Prikaži kontrole zumiranja\",\n \"sidebarPanelsNavigation\": \"Bočne ploče navigacija\",\n \"single\": \"Jedan\",\n \"startHere\": \"Počnite ovdje\",\n \"suggestSearch\": \"Pretraži ovaj dokument za \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Sadržaj\",\n \"theme\": \"Tema\",\n \"thumbnailList\": \"Popis sličica\",\n \"thumbnailNavigation\": \"Sličice\",\n \"thumbnails\": \"Sličice\",\n \"toggleWindowSideBar\": \"Prebaci bočnu traku\",\n \"totalCollections_one\": \"{{count}} kolekcija\",\n \"totalCollections_other\": \"{{count}} kolekcija\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"totalManifests_other\": \"{{count}} manifesta\",\n \"tryAgain\": \"Pokušaj ponovno\",\n \"untitled\": \"[Nenaslovljeno]\",\n \"view\": \"Pogled\",\n \"viewWorkspaceConfiguration\": \"Pogledaj konfiguraciju radnog prostora\",\n \"welcome\": \"Dobrodošli u Mirador\",\n \"window\": \"Prozor: {{label}}\",\n \"windowMenu\": \"Prikazi prozora i prikaz sličica\",\n \"windowNavigation\": \"Navigacija prozorom\",\n \"windowPluginButtons\": \"Opcije\",\n \"windowPluginMenu\": \"Opcije prozora\",\n \"workspace\": \"Radni prostor\",\n \"workspaceFullScreen\": \"Puni zaslon\",\n \"workspaceMenu\": \"Postavke radnog prostora\",\n \"workspaceNavigation\": \"Navigacija radnog prostora\",\n \"workspaceOptions\": \"Opcije radnog prostora\",\n \"workspaceSelectionTitle\": \"Odaberite vrstu radnog prostora\",\n \"zoomIn\": \"Povećaj\",\n \"zoomOut\": \"Umanji prikaz\",\n \"zoomReset\": \"Poništi zumiranje\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Project Miradorについて\",\n \"aboutThisItem\": \"この資料について\",\n \"addedFromUrl\": \"(URLで追加)\",\n \"addManifestUrl\": \"資料のIIIFマニフェストURI\",\n \"addManifestUrlHelp\": \"追加したいIIIF資料のURIを上記に入力してください\",\n \"addResource\": \"資料の追加\",\n \"annotationCanvasLabel_1/1\": \"アイテム: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"左: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"右: [{{label}}]\",\n \"annotations\": \"アノテーション\",\n \"attribution\": \"帰属\",\n \"attributionTitle\": \"権利\",\n \"authenticationFailed\": \"認証失敗\",\n \"authenticationRequired\": \"フルアクセスには認証が必要\",\n \"backToResults\": \"結果に戻る\",\n \"book\": \"見開き\",\n \"bottom\": \"下部\",\n \"cancel\": \"キャンセル\",\n \"canvasIndex\": \"インデックス\",\n \"changeTheme\": \"テーマの変更\",\n \"clearSearch\": \"クリア\",\n \"close\": \"閉じる\",\n \"closeAddResourceForm\": \"フォームを閉じる\",\n \"closeAddResourceMenu\": \"資料一覧を閉じる\",\n \"closeCompanionWindow\": \"パネルを閉じる\",\n \"closeWindow\": \"ウインドウを閉じる\",\n \"collapseSection\": \"{{section}} セクションを畳む\",\n \"collapseSidePanel\": \"サイドバーを畳む\",\n \"collection\": \"コレクション\",\n \"continue\": \"続ける\",\n \"copy\": \"コピー\",\n \"currentItem\": \"現在のアイテム\",\n \"currentItem_1/1\": \"現在のアイテム\",\n \"currentItem_1/2\": \"左\",\n \"currentItem_2/2\": \"右\",\n \"dark\": \"ダークなテーマ\",\n \"digitizedView\": \"デジタルビュー\",\n \"dismiss\": \"片付け\",\n \"displayNoAnnotations\": \"アノテーションを非表示\",\n \"downloadExport\": \"ワークスペースをエクスポート\",\n \"downloadExportWorkspace\": \"ワークスペースをエクスポート\",\n \"elastic\": \"伸縮\",\n \"elasticDescription\": \"自由なウインドウの伸縮\",\n \"emptyResourceList\": \"資料の一覧が空です\",\n \"error\": \"エラー\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"エラー発生\",\n \"exitFullScreen\": \"全画面を解除\",\n \"expandSection\": \"セクション {{section}}を拡大\",\n \"expandSidePanel\": \"サイドバーを拡大\",\n \"exportCopied\": \"ワークスペースの設定がクリップボードにコピーされました。\",\n \"fetchManifest\": \"追加\",\n \"fullScreen\": \"全画面\",\n \"gallery\": \"ギャラリー\",\n \"hideZoomControls\": \"zoom制御を隠す\",\n \"highlightAllAnnotations\": \"すべてを表示\",\n \"iiif_homepage\": \"IIIFホームページ\",\n \"iiif_manifest\": \"IIIF マニフェスト\",\n \"iiif_renderings\": \"別の形式\",\n \"iiif_seeAlso\": \"参照\",\n \"import\": \"取り込み\",\n \"importWorkspace\": \"ワークスペースの取り込み\",\n \"importWorkspaceHint\": \"Mirador3の設定を貼り付け\",\n \"item\": \"アイテム: {{label}}\",\n \"itemList\": \"アイテム一覧\",\n \"jsError\": \"技術的な詳細\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"言語\",\n \"layer_hide\": \"レイヤーを隠す\",\n \"layer_move\": \"レイヤーを動かす\",\n \"layer_opacity\": \"レイヤーの透過度\",\n \"layer_show\": \"レイヤーを表示\",\n \"layers\": \"レイヤー\",\n \"light\": \"明るいテーマ\",\n \"links\": \"リンク\",\n \"listAllOpenWindows\": \"ウインドウにジャンプ\",\n \"login\": \"ログイン\",\n \"logout\": \"ログアウト\",\n \"manifestError\": \"資料追加に失敗:\",\n \"maximizeWindow\": \"ウインドウを最大化\",\n \"minimizeWindow\": \"ウインドウを最小化\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador資料\",\n \"miradorViewer\": \"Miradorビューワ\",\n \"more\": \"さらに...\",\n \"moreResults\": \"さらに結果を\",\n \"mosaic\": \"モザイク\",\n \"mosaicDescription\": \"モザイク表示\",\n \"moveCompanionWindowToBottom\": \"下部に移動\",\n \"moveCompanionWindowToRight\": \"右に移動\",\n \"nextCanvas\": \"次のアイテム\",\n \"noItemSelected\": \"アイテムが未選択\",\n \"numItems_one\": \"{{number}} アイテム\",\n \"off\": \"オフ\",\n \"openCompanionWindow_annotations\": \"アノテーション\",\n \"openCompanionWindow_attribution\": \"権利\",\n \"openCompanionWindow_canvas\": \"インデックス\",\n \"openCompanionWindow_info\": \"情報\",\n \"openCompanionWindow_layers\": \"レイヤー\",\n \"openCompanionWindow_search\": \"検索\",\n \"openInCompanionWindow\": \"別のパネルで開く\",\n \"openWindows\": \"現在開いているウインドウ\",\n \"pagination\": \"{{current}} of {{total}}\",\n \"position\": \"位置\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"前のアイテム\",\n \"related\": \"関連\",\n \"resource\": \"資料\",\n \"retry\": \"リトライ\",\n \"right\": \"右側\",\n \"rights\": \"利用条件\",\n \"scroll\": \"スクロール\",\n \"searchInputLabel\": \"検索語\",\n \"searchNextResult\": \"次の結果\",\n \"searchNoResults\": \"ヒットせず\",\n \"searchPreviousResult\": \"前の結果\",\n \"searchSubmitAria\": \"検索\",\n \"searchTitle\": \"検索\",\n \"selectWorkspaceMenu\": \"ワークスペースタイプの選択\",\n \"showCollection\": \"コレクションを表示\",\n \"showingNumAnnotations_one\": \"アノテーション {{number}} を表示\",\n \"showZoomControls\": \"ズーム操作を表示\",\n \"sidebarPanelsNavigation\": \"サイドバーパネルの操作\",\n \"single\": \"単一\",\n \"startHere\": \"ここから始める\",\n \"suggestSearch\": \"この文書を \\\"{{ query }}\\\" で検索\",\n \"tableOfContentsList\": \"目次\",\n \"theme\": \"テーマ\",\n \"thumbnailList\": \"サムネイル一覧\",\n \"thumbnailNavigation\": \"サムネイル\",\n \"thumbnails\": \"サムネイル表示\",\n \"toggleWindowSideBar\": \"サイドバー切り替え\",\n \"totalCollections_one\": \"{{count}} コレクション\",\n \"totalManifests_one\": \"{{count}} マニフェスト\",\n \"tryAgain\": \"もう一度試す\",\n \"untitled\": \"[タイトル無し]\",\n \"view\": \"表示の仕方\",\n \"welcome\": \"Miradorにようこそ\",\n \"window\": \"{{label}} ウインドウ\",\n \"windowMenu\": \"ウインドウメニュー\",\n \"windowNavigation\": \"ウィンドウ操作\",\n \"windowPluginButtons\": \"オプション\",\n \"windowPluginMenu\": \"ウインドウオプション\",\n \"workspace\": \"ワークスペース\",\n \"workspaceFullScreen\": \"全画面\",\n \"workspaceMenu\": \"ワークスペースの設定\",\n \"workspaceNavigation\": \"ワークスペースナビ\",\n \"workspaceOptions\": \"ワークスペースのオプション\",\n \"workspaceSelectionTitle\": \"ワークスペースのタイプを選択\",\n \"zoomIn\": \"ズームイン\",\n \"zoomOut\": \"ズームアウト\",\n \"zoomReset\": \"ズームを戻す\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Mirador 프로젝트에 대하여\",\n \"aboutThisItem\": \"해당 아이템에 대하여\",\n \"addedFromUrl\": \"(URL에서 추가됨)\",\n \"addManifestUrl\": \"리소스의 위치\",\n \"addManifestUrlHelp\": \"IIIF 리소스의 URL\",\n \"addResource\": \"리소스 추가\",\n \"annotationCanvasLabel_1/1\": \"아이템: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"왼쪽: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"오른쪽: [{{label}}]\",\n \"annotations\": \"주석\",\n \"attribution\": \"귀속\",\n \"attributionTitle\": \"권리\",\n \"authenticationFailed\": \"인증 실패.\",\n \"authenticationRequired\": \"모든 정보에 접근하기 위해선 인증이 필요합니다.\",\n \"backToResults\": \"결과로 돌아가기\",\n \"book\": \"책\",\n \"bottom\": \"아래\",\n \"cancel\": \"취소\",\n \"canvasIndex\": \"인덱스\",\n \"changeTheme\": \"테마 변경\",\n \"clearSearch\": \"지우기\",\n \"close\": \"닫기\",\n \"closeAddResourceForm\": \"폼 닫기\",\n \"closeAddResourceMenu\": \"리소스 목록 닫기\",\n \"closeCompanionWindow\": \"패널 닫기\",\n \"closeWindow\": \"윈도우 닫기\",\n \"collapseSection\": \"\\\"{{section}}\\\" 섹션 접기\",\n \"collapseSidePanel\": \"사이드바 접기\",\n \"collection\": \"컬렉션\",\n \"continue\": \"계속하기\",\n \"copy\": \"복사\",\n \"currentItem\": \"현재 아이템\",\n \"currentItem_1/1\": \"현재 아이템\",\n \"currentItem_1/2\": \"왼쪽\",\n \"currentItem_2/2\": \"오른쪽\",\n \"dark\": \"다크 모드\",\n \"digitizedView\": \"디지털 뷰\",\n \"dismiss\": \"무시하기\",\n \"displayNoAnnotations\": \"하이라이트 해제\",\n \"downloadExport\": \"작업공간 내보내기\",\n \"downloadExportWorkspace\": \"작업공간 내보내기\",\n \"elastic\": \"신축성\",\n \"elasticDescription\": \"무한한 작업공간에서 윈도우를 자유롭게 움직이고 조절해보세요. 윈도우는 서로 겹칠 수 있습니다.\",\n \"emptyResourceList\": \"리소스 목록이 비어있습니다\",\n \"error\": \"오류\",\n \"errorDialogConfirm\": \"허락\",\n \"errorDialogTitle\": \"오류 발생\",\n \"exitFullScreen\": \"전체화면에서 나가기\",\n \"expandSection\": \"\\\"{{section}}\\\" 섹션 확장\",\n \"expandSidePanel\": \"사이드바 확장\",\n \"exportCopied\": \"작업공간 환경설정을 클립보드에 복사했습니다\",\n \"fetchManifest\": \"추가하기\",\n \"fullScreen\": \"전체화면\",\n \"gallery\": \"갤러리\",\n \"hideZoomControls\": \"확대/축소 기능 숨기기\",\n \"highlightAllAnnotations\": \"모두 하이라이트하기\",\n \"iiif_homepage\": \"해당 리소스에 대하여\",\n \"iiif_manifest\": \"IIIF 매니페스트\",\n \"iiif_renderings\": \"대체 포맷\",\n \"iiif_seeAlso\": \"참고\",\n \"import\": \"가져오기\",\n \"importWorkspace\": \"작업공간 가져오기\",\n \"importWorkspaceHint\": \"Mirador 4 환경설정 가져와 붙여넣기\",\n \"item\": \"아이템: {{label}}\",\n \"itemList\": \"아이템 목록\",\n \"jsError\": \"기술적인 세부사항\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"언어\",\n \"layer_hide\": \"레이어 숨기기\",\n \"layer_move\": \"레이어 움직이기\",\n \"layer_opacity\": \"레이어 불투명도\",\n \"layer_show\": \"레이어 보이기\",\n \"layers\": \"레이어\",\n \"light\": \"라이트 모드\",\n \"links\": \"링크\",\n \"listAllOpenWindows\": \"윈도우로 이동하기\",\n \"login\": \"로그인\",\n \"logout\": \"로그아웃\",\n \"manifestError\": \"리소스를 추가할 수 없습니다:\",\n \"maximizeWindow\": \"윈도우 크기 최대화\",\n \"minimizeWindow\": \"윈도우 크기 최소화\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador 리소스\",\n \"miradorViewer\": \"Mirador 뷰어\",\n \"more\": \"더 보기...\",\n \"moreResults\": \"결과 더 보기\",\n \"mosaic\": \"모자이크\",\n \"mosaicDescription\": \"프레임 내에서 윈도우를 이동하고 크기를 조정합니다.\",\n \"moveCompanionWindowToBottom\": \"아래로 옮기기\",\n \"moveCompanionWindowToRight\": \"오른쪽으로 옮기기\",\n \"nextCanvas\": \"다음 아이템\",\n \"noItemSelected\": \"아이템이 선택되지 않았습니다\",\n \"numItems_one\": \"{{number}}개의 아이템\",\n \"numItems_other\": \"{{number}}개의 아이템\",\n \"off\": \"끄기\",\n \"openCompanionWindow_annotations\": \"주석\",\n \"openCompanionWindow_attribution\": \"권리\",\n \"openCompanionWindow_canvas\": \"인덱스\",\n \"openCompanionWindow_info\": \"정보\",\n \"openCompanionWindow_layers\": \"레이어\",\n \"openCompanionWindow_search\": \"검색\",\n \"openInCompanionWindow\": \"별도의 패널에서 열기\",\n \"openWindows\": \"현재 열려있는 윈도우\",\n \"pagination\": \"{{current}} of {{total}}\",\n \"position\": \"배치\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"이전 아이템\",\n \"related\": \"관련\",\n \"resource\": \"리소스\",\n \"retry\": \"재시도\",\n \"right\": \"오른쪽\",\n \"rights\": \"라이선스\",\n \"scroll\": \"스크롤\",\n \"searchInputLabel\": \"용어 찾기\",\n \"searchNextResult\": \"다음 결과\",\n \"searchNoResults\": \"해당 결과 없음\",\n \"searchPreviousResult\": \"이전 결과\",\n \"searchResultsRemaining\": \"{{numLeft}}개 남음\",\n \"searchSubmitAria\": \"검색하기\",\n \"searchTitle\": \"검색\",\n \"selectWorkspaceMenu\": \"작업공간 유형 선택\",\n \"showCollection\": \"컬렉션 보이기\",\n \"showingNumAnnotations_one\": \"{{number}}개의 주석 나타내기\",\n \"showingNumAnnotations_other\": \"{{number}}개의 주석 나타내기\",\n \"showZoomControls\": \"확대/축소 기능 보이기\",\n \"sidebarPanelsNavigation\": \"사이드바 패널 탐색\",\n \"single\": \"한 개\",\n \"startHere\": \"시작하기\",\n \"suggestSearch\": \"이 문서를 \\\"{{ query }}\\\"로 검색하기\",\n \"tableOfContentsList\": \"목차\",\n \"theme\": \"테마\",\n \"thumbnailList\": \"썸네일 목록\",\n \"thumbnailNavigation\": \"썸네일\",\n \"thumbnails\": \"썸네일\",\n \"toggleWindowSideBar\": \"사이드바 전환\",\n \"totalCollections_one\": \"{{count}}개의 컬렉션\",\n \"totalCollections_other\": \"{{count}}개의 컬렉션\",\n \"totalManifests_one\": \"{{count}}개의 매니페스트\",\n \"totalManifests_other\": \"{{count}}개의 매니페스트\",\n \"tryAgain\": \"다시 시도하세요\",\n \"untitled\": \"[타이틀 없음]\",\n \"view\": \"뷰\",\n \"viewWorkspaceConfiguration\": \"작업공간 환경설정 ㅂ괴\",\n \"welcome\": \"Mirador에 오신 것을 환영합니다\",\n \"window\": \"윈도우: {{label}}\",\n \"windowMenu\": \"윈도우 뷰 & 썸네일 표시\",\n \"windowNavigation\": \"윈도우 탐색\",\n \"windowPluginButtons\": \"옵션\",\n \"windowPluginMenu\": \"윈도우 옵션\",\n \"workspace\": \"작업공간\",\n \"workspaceFullScreen\": \"전체화면\",\n \"workspaceMenu\": \"작업공간 설정\",\n \"workspaceNavigation\": \"작업공간 탐색\",\n \"workspaceOptions\": \"작업공간 옵션\",\n \"workspaceSelectionTitle\": \"작업공간 유형을 선택하세요\",\n \"zoomIn\": \"확대\",\n \"zoomOut\": \"축소\",\n \"zoomReset\": \"줌 재설정\"\n }\n}\n","{\n \"translation\": {\n \"aboutThisItem\": \"Over dit item\",\n \"addedFromUrl\": \"(Toegevoegd via URL)\",\n \"addManifestUrl\": \"Locatie bron\",\n \"addManifestUrlHelp\": \"De URL van een IIIF-resource\",\n \"addResource\": \"Voeg bron toe\",\n \"annotationCanvasLabel_1/1\": \"Item: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Links: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Rechts: [{{label}}]\",\n \"annotations\": \"Annotaties\",\n \"attribution\": \"Naamsvermelding\",\n \"attributionTitle\": \"Rechten\",\n \"authenticationFailed\": \"Authenticatie gefaald.\",\n \"authenticationRequired\": \"Authenticatie is vereist voor volledige toegang\",\n \"backToResults\": \"Terug naar resultaten\",\n \"book\": \"Boek\",\n \"bottom\": \"Onderaan\",\n \"cancel\": \"Annuleer\",\n \"canvasIndex\": \"Index\",\n \"changeTheme\": \"Wijzig thema\",\n \"clearSearch\": \"clear\",\n \"closeAddResourceForm\": \"Sluit formulier\",\n \"closeAddResourceMenu\": \"Sluit lijst met bronnen\",\n \"closeCompanionWindow\": \"Sluit paneel\",\n \"closeWindow\": \"Sluit venster\",\n \"collapseSection\": \"Klap \\\"{{section}}\\\" sectie in\",\n \"collapseSidePanel\": \"Klap zijbalk in\",\n \"continue\": \"Ga verder\",\n \"copy\": \"Kopieer\",\n \"currentItem\": \"Huidig item\",\n \"currentItem_1/1\": \"Huidig item\",\n \"currentItem_1/2\": \"Links\",\n \"currentItem_2/2\": \"Rechts\",\n \"dark\": \"Donker thema\",\n \"dismiss\": \"Dismiss\",\n \"downloadExport\": \"Exporteer workspace\",\n \"downloadExportWorkspace\": \"Exporteer workspace\",\n \"elastic\": \"Elastisch\",\n \"elasticDescription\": \"Verplaats en rangschik vensters vrij in een onbeperkte workspace. Vensters kunnen elkaar overlappen.\",\n \"emptyResourceList\": \"Je lijst met bronnen is leeg\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Er is een fout opgetreden\",\n \"exitFullScreen\": \"Verlaat volledig scherm\",\n \"expandSection\": \"Klap \\\"{{section}}\\\" sectie uit\",\n \"expandSidePanel\": \"Klap zijbalk uit\",\n \"fetchManifest\": \"Voeg toe\",\n \"fullScreen\": \"Volledig scherm\",\n \"gallery\": \"Gallerij\",\n \"hideZoomControls\": \"Verberg zoomknoppen\",\n \"highlightAllAnnotations\": \"Markeer alles\",\n \"iiif_homepage\": \"Over deze bron\",\n \"iiif_manifest\": \"IIIF-manifest\",\n \"iiif_renderings\": \"Alternatieve formaten\",\n \"iiif_seeAlso\": \"Zie ook\",\n \"import\": \"Importeer\",\n \"importWorkspace\": \"Importeer workspace\",\n \"importWorkspaceHint\": \"Plak een Mirador 4 configuratie die geïmporteerd moet worden\",\n \"item\": \"Item: {{label}}\",\n \"itemList\": \"Compacte lijst\",\n \"language\": \"Taal\",\n \"light\": \"Licht thema\",\n \"links\": \"Links\",\n \"listAllOpenWindows\": \"Ga naar venster\",\n \"login\": \"Log in\",\n \"manifestError\": \"De bron kan niet worden toegevoegd:\",\n \"maximizeWindow\": \"Maximaliseer venster\",\n \"minimizeWindow\": \"Minimaliseer venster\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador resources\",\n \"miradorViewer\": \"Mirador viewer\",\n \"more\": \"meer...\",\n \"moreResults\": \"Meer resultaten\",\n \"mosaic\": \"Mozaïek\",\n \"mosaicDescription\": \"Verplaats en rangschik vensters in verhouding tot elkaar binnen het zichtbare kader.\",\n \"moveCompanionWindowToBottom\": \"Verplaats naar beneden\",\n \"moveCompanionWindowToRight\": \"Verplaats naar rechts\",\n \"nextCanvas\": \"Volgend item\",\n \"numItems_one\": \"{{number}} item\",\n \"numItems_other\": \"{{number}} items\",\n \"off\": \"Uit\",\n \"openCompanionWindow_annotations\": \"Annotaties\",\n \"openCompanionWindow_attribution\": \"Rechten\",\n \"openCompanionWindow_canvas\": \"Index\",\n \"openCompanionWindow_info\": \"Informatie\",\n \"openCompanionWindow_search\": \"Zoeken\",\n \"openInCompanionWindow\": \"Open in een apart paneel\",\n \"openWindows\": \"Geopende vensters\",\n \"pagination\": \"{{current}} van {{total}}\",\n \"position\": \"Positie\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Vorig item\",\n \"related\": \"Verwant\",\n \"resource\": \"Bron\",\n \"retry\": \"Probeer opnieuw\",\n \"right\": \"Rechts\",\n \"rights\": \"Licentie\",\n \"searchInputLabel\": \"zoek termen\",\n \"searchNextResult\": \"Volgend resultaat\",\n \"searchNoResults\": \"Geen resultaten gevonden\",\n \"searchPreviousResult\": \"Vorig resultaat\",\n \"searchSubmitAria\": \"Zoeken\",\n \"searchTitle\": \"Zoek\",\n \"selectWorkspaceMenu\": \"Selecteer workspacetype\",\n \"showingNumAnnotations_one\": \"{{number}} annotatie weergegeven\",\n \"showingNumAnnotations_other\": \"{{number}} annotaties weergegeven\",\n \"showZoomControls\": \"Toon zoomknoppen\",\n \"sidebarPanelsNavigation\": \"Zijbalk panelen navigatie\",\n \"single\": \"Enkel\",\n \"startHere\": \"Begin Hier\",\n \"suggestSearch\": \"Zoek in dit document naar \\\"{{ query }}\\\"\",\n \"theme\": \"Thema\",\n \"thumbnailList\": \"Lijst thumbnails\",\n \"thumbnailNavigation\": \"Thumbnails\",\n \"thumbnails\": \"Thumbnails\",\n \"toggleWindowSideBar\": \"Toon zijbalk\",\n \"totalCollections_one\": \"{{count}} collectie\",\n \"totalCollections_other\": \"{{count}} collecties\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"totalManifests_other\": \"{{count}} manifests\",\n \"tryAgain\": \"Probeer opnieuw\",\n \"untitled\": \"[Zonder titel]\",\n \"view\": \"Weergave\",\n \"welcome\": \"Welkom in Mirador\",\n \"window\": \"Venster: {{label}}\",\n \"windowMenu\": \"Vensters- en miniatuurweergave\",\n \"windowNavigation\": \"Navigatie venster\",\n \"windowPluginButtons\": \"Opties\",\n \"windowPluginMenu\": \"Vensteropties\",\n \"workspace\": \"Workspace\",\n \"workspaceFullScreen\": \"Volledig scherm\",\n \"workspaceMenu\": \"Workspace instellingen\",\n \"workspaceOptions\": \"Workspace opties\",\n \"workspaceSelectionTitle\": \"Selecteer een workspace type\",\n \"zoomIn\": \"Zoom in\",\n \"zoomOut\": \"Zoom out\",\n \"zoomReset\": \"Reset zoom\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"O Projekcie Mirador\",\n \"aboutThisItem\": \"O bieżącej pozycji\",\n \"addedFromUrl\": \"(Dodano z URL)\",\n \"addManifestUrl\": \"Lokalizacja zasobów\",\n \"addManifestUrlHelp\": \"URL zasobów IIIF\",\n \"addResource\": \"Dodaj zasoby\",\n \"annotationCanvasLabel_1/1\": \"Pozycja: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Lewo: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Prawo: [{{label}}]\",\n \"annotations\": \"Adnotacje\",\n \"attribution\": \"Atrybucja\",\n \"attributionTitle\": \"Prawa\",\n \"authenticationFailed\": \"Uwierzytelnianie nie powiodło się.\",\n \"authenticationRequired\": \"Do pełnego dostępu wymagane jest uwierzytelnienie\",\n \"backToResults\": \"Powrót do wyników\",\n \"book\": \"Książka\",\n \"bottom\": \"Dół\",\n \"cancel\": \"Anuluj\",\n \"canvasIndex\": \"Indeks\",\n \"changeTheme\": \"Zmień motyw\",\n \"clearSearch\": \"wyczyść\",\n \"close\": \"Zamknij\",\n \"closeAddResourceForm\": \"Zamknij formularz\",\n \"closeAddResourceMenu\": \"Zamknij listę zasobów\",\n \"closeCompanionWindow\": \"Zamknij panel\",\n \"closeWindow\": \"Zamknij okno\",\n \"collapseSection\": \"Zwiń sekcję \\\"{{section}}\\\"\",\n \"collapseSidePanel\": \"Zwiń panel boczny\",\n \"collection\": \"Zbiór\",\n \"continue\": \"Kontynuuj\",\n \"copy\": \"Kopiuj\",\n \"currentItem\": \"Bieżąca pozycja\",\n \"currentItem_1/1\": \"Bieżąca pozycja\",\n \"currentItem_1/2\": \"Lewo\",\n \"currentItem_2/2\": \"Prawo\",\n \"dark\": \"Ciemny motyw\",\n \"digitizedView\": \"Widok zdigitalizowany\",\n \"dismiss\": \"Odrzuć\",\n \"displayNoAnnotations\": \"Nie podświetlaj\",\n \"downloadExport\": \"Eksportuj obszar roboczy\",\n \"downloadExportWorkspace\": \"Eksportuj obszar roboczy\",\n \"elastic\": \"Elastyczny\",\n \"elasticDescription\": \"Swobodnie przesuwaj i dopasowuj okna w nieograniczonej przestrzeni roboczej. Okna mogą zachodzić na siebie.\",\n \"emptyResourceList\": \"Twoja lista zasobów jest pusta\",\n \"error\": \"Błąd\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Wystąpił błąd\",\n \"exitFullScreen\": \"Wyłącz tryb pełnoekranowy\",\n \"expandSection\": \"Rozwiń sekcję \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"Rozwiń panel boczny\",\n \"exportCopied\": \"Konfiguracja obszaru roboczego została skopiowana do schowka\",\n \"fetchManifest\": \"Dodaj\",\n \"fullScreen\": \"Pełny ekran\",\n \"gallery\": \"Galeria\",\n \"hideZoomControls\": \"Ukryj kontrolki powiększenia\",\n \"highlightAllAnnotations\": \"Podświetl wszystko\",\n \"iiif_homepage\": \"O tym zasobie\",\n \"iiif_manifest\": \"Manifest IIIF\",\n \"iiif_renderings\": \"Alternatywne formaty\",\n \"iiif_seeAlso\": \"Zobacz też\",\n \"import\": \"Importuj\",\n \"importWorkspace\": \"Importuj obszar roboczy\",\n \"importWorkspaceHint\": \"Wklej konfigurację Mirador 4 do zaimportowania\",\n \"item\": \"Pozycja: {{label}}\",\n \"itemList\": \"Lista pozycji\",\n \"jsError\": \"Szczegóły techniczne\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Język\",\n \"layer_hide\": \"Ukryj warstwę\",\n \"layer_move\": \"Przenieś warstwę\",\n \"layer_opacity\": \"Krycie warstwy\",\n \"layer_show\": \"Pokaż warstwę\",\n \"layers\": \"Warstwy\",\n \"light\": \"Jasny motyw\",\n \"links\": \"Linki\",\n \"listAllOpenWindows\": \"Przejdź do okna\",\n \"login\": \"Zaloguj\",\n \"logout\": \"Wyloguj\",\n \"manifestError\": \"Następujące zasoby nie mogą być dodane:\",\n \"maximizeWindow\": \"Maksymalizuj okno\",\n \"minimizeWindow\": \"Minimalizuj okno\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Zasoby Mirador\",\n \"miradorViewer\": \"Przeglądarka Mirador\",\n \"more\": \"więcej...\",\n \"moreResults\": \"Więcej wyników\",\n \"mosaic\": \"Mozaika\",\n \"mosaicDescription\": \"Przesuwaj i zmieniaj rozmiary okien względem siebie, w widocznej ramce.\",\n \"moveCompanionWindowToBottom\": \"Przesuń na dół\",\n \"moveCompanionWindowToRight\": \"Przesuń w prawo\",\n \"nextCanvas\": \"Następna pozycja\",\n \"noItemSelected\": \"Nie wybrano pozycji\",\n \"numItems_one\": \"{{number}} pozycja\",\n \"numItems_other\": \"{{number}} pozycje\",\n \"off\": \"Wyłącz\",\n \"openCompanionWindow_annotations\": \"Adnotacje\",\n \"openCompanionWindow_attribution\": \"Prawa\",\n \"openCompanionWindow_canvas\": \"Indeks\",\n \"openCompanionWindow_info\": \"Informacje\",\n \"openCompanionWindow_layers\": \"Warstwy\",\n \"openCompanionWindow_search\": \"Szukaj\",\n \"openInCompanionWindow\": \"Otwórz w oddzielnym panelu\",\n \"openWindows\": \"Aktualnie otwarte okna\",\n \"pagination\": \"{{current}} of {{total}}\",\n \"position\": \"Pozycja\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Poprzednia pozycja\",\n \"related\": \"Powiązane\",\n \"resource\": \"Zasoby\",\n \"retry\": \"Spróbuj ponownie\",\n \"right\": \"Prawo\",\n \"rights\": \"Licencja\",\n \"scroll\": \"Przewiń\",\n \"searchInputLabel\": \"szukane słowa\",\n \"searchNextResult\": \"Następny wynik\",\n \"searchNoResults\": \"Nie znaleziono wyników\",\n \"searchPreviousResult\": \"Poprzedni wynik\",\n \"searchResultsRemaining\": \"Pozostało {{numLeft}}\",\n \"searchSubmitAria\": \"Wyszukaj\",\n \"searchTitle\": \"Wyszukaj\",\n \"selectWorkspaceMenu\": \"Wybierz typ obszaru roboczego\",\n \"showCollection\": \"Pokaż zbiór\",\n \"showingNumAnnotations_one\": \"Wyświetlanie {{number}} adnotacji\",\n \"showingNumAnnotations_other\": \"Wyświetlanie {{number}} adnotacji\",\n \"showZoomControls\": \"Pokaż kontrolki powiększenia\",\n \"sidebarPanelsNavigation\": \"Nawigacja pasków panelu bocznego\",\n \"single\": \"Pojedynczy\",\n \"startHere\": \"Zacznij tutaj\",\n \"suggestSearch\": \"Przeszukaj ten dokument pod kątem \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Spis treści\",\n \"theme\": \"Motyw\",\n \"thumbnailList\": \"Lista miniatur\",\n \"thumbnailNavigation\": \"Miniatury\",\n \"thumbnails\": \"Miniatury\",\n \"toggleWindowSideBar\": \"Przełącz panel boczny\",\n \"totalCollections_one\": \"{{count}} zbiór\",\n \"totalCollections_other\": \"{{count}} zbiorów\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"totalManifests_other\": \"{{count}} manifestów\",\n \"tryAgain\": \"Spróbuj ponownie\",\n \"untitled\": \"[Bez nazwy]\",\n \"view\": \"Widok\",\n \"viewWorkspaceConfiguration\": \"Wyświetl konfigurację obszaru roboczego\",\n \"welcome\": \"Witaj w Miradorze\",\n \"window\": \"Okno: {{label}}\",\n \"windowMenu\": \"Widoki okien i wyświetlanie miniatur\",\n \"windowNavigation\": \"Nawigacja okna\",\n \"windowPluginButtons\": \"Opcje\",\n \"windowPluginMenu\": \"Opcje okna\",\n \"workspace\": \"Obszar roboczy\",\n \"workspaceFullScreen\": \"Pełny ekran\",\n \"workspaceMenu\": \"Ustawienia obszaru roboczego\",\n \"workspaceNavigation\": \"Nawigacja obszaru roboczego\",\n \"workspaceOptions\": \"Opcje obszaru roboczego\",\n \"workspaceSelectionTitle\": \"Wybierz typ obszaru roboczego\",\n \"zoomIn\": \"Przybliż\",\n \"zoomOut\": \"Oddal\",\n \"zoomReset\": \"Zresetuj powiększenie\"\n }\n}\n","{\n \"translation\": {\n \"aboutThisItem\": \"Sobre esse item\",\n \"addedFromUrl\": \"(Adicionado por URL)\",\n \"addManifestUrl\": \"Localização do manifesto\",\n \"addManifestUrlHelp\": \"URL do manifesto IIIF\",\n \"addResource\": \"Adicionar conteúdo\",\n \"annotationCanvasLabel_1/1\": \"Item: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Esquerda: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Direita: [{{label}}]\",\n \"annotations\": \"Anotações\",\n \"attribution\": \"Atribuições\",\n \"attributionTitle\": \"Direitos\",\n \"authenticationFailed\": \"Falha na autenticação.\",\n \"authenticationRequired\": \"Autenticação necessária para acesso completo\",\n \"backToResults\": \"Voltar aos resultados\",\n \"book\": \"Livro\",\n \"bottom\": \"Embaixo\",\n \"cancel\": \"Cancelar\",\n \"canvasIndex\": \"Índice\",\n \"changeTheme\": \"Mudar tema\",\n \"clearSearch\": \"limpar\",\n \"closeAddResourceForm\": \"Fechar formulário\",\n \"closeAddResourceMenu\": \"Fechar lista de conteúdo\",\n \"closeCompanionWindow\": \"Fechar painel\",\n \"closeWindow\": \"Fechar janela\",\n \"collapseSection\": \"Suprimir seção \\\"{{section}}\\\"\",\n \"collapseSidePanel\": \"Suprimir barra lateral\",\n \"continue\": \"Continuar\",\n \"copy\": \"Copiar\",\n \"currentItem\": \"Item atual\",\n \"currentItem_1/1\": \"Item atual\",\n \"currentItem_1/2\": \"Esquerda\",\n \"currentItem_2/2\": \"Direita\",\n \"dark\": \"Tema escuro\",\n \"dismiss\": \"Cancelar\",\n \"downloadExport\": \"Exportar área de trabalho\",\n \"downloadExportWorkspace\": \"Exportar área de trabalho\",\n \"elastic\": \"Elástico\",\n \"elasticDescription\": \"Mova e redimensione janelas livremente numa área de trabalho ilimitada. Janelas podem se sobrepor.\",\n \"emptyResourceList\": \"Sua lista de conteúdos está vazia\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Um erro ocorreu\",\n \"exitFullScreen\": \"Sair do modo tela cheia\",\n \"expandSection\": \"Expandir seção \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"Expandir barra lateral\",\n \"fetchManifest\": \"Adicionar\",\n \"fullScreen\": \"Tela cheia\",\n \"gallery\": \"Galeria\",\n \"hideZoomControls\": \"Ocultar controles de zoom\",\n \"highlightAllAnnotations\": \"Exibir todas\",\n \"iiif_homepage\": \"Sobre esse conteúdo\",\n \"iiif_manifest\": \"Manifesto IIIF\",\n \"iiif_renderings\": \"Outros formatos\",\n \"iiif_seeAlso\": \"Veja também\",\n \"import\": \"Importar\",\n \"importWorkspace\": \"Importar área de trabalho\",\n \"importWorkspaceHint\": \"Cole uma configuração do Mirador 4 para importar\",\n \"item\": \"Item: {{label}}\",\n \"itemList\": \"Lista compacta\",\n \"language\": \"Idioma\",\n \"light\": \"Tema claro\",\n \"links\": \"Links\",\n \"listAllOpenWindows\": \"Pular para janela\",\n \"login\": \"Login\",\n \"manifestError\": \"O conteúdo não pode ser adicionado:\",\n \"maximizeWindow\": \"Maximizar janela\",\n \"minimizeWindow\": \"Minimizar janela\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"conteúdo Mirador\",\n \"miradorViewer\": \"visualizador Mirador\",\n \"more\": \"mais...\",\n \"moreResults\": \"Mais resultados\",\n \"mosaic\": \"Mosáico\",\n \"mosaicDescription\": \"Mova e redimensione janelas em relação entre si, dentro de uma área visível (grid).\",\n \"moveCompanionWindowToBottom\": \"Mover para baixo\",\n \"moveCompanionWindowToRight\": \"Mover para direita\",\n \"nextCanvas\": \"Próximo item\",\n \"numItems_one\": \"{{number}} itens\",\n \"off\": \"Desativado\",\n \"openCompanionWindow_annotations\": \"Anotações\",\n \"openCompanionWindow_attribution\": \"Direitos\",\n \"openCompanionWindow_canvas\": \"Índice\",\n \"openCompanionWindow_info\": \"Informações\",\n \"openCompanionWindow_search\": \"Busca\",\n \"openInCompanionWindow\": \"Abrir em janela separada\",\n \"openWindows\": \"Janelas abertas\",\n \"pagination\": \"{{current}} de {{total}}\",\n \"position\": \"Posição\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Item anterior\",\n \"related\": \"Relacionado\",\n \"resource\": \"Conteúdo\",\n \"retry\": \"Tentar novamente\",\n \"right\": \"Direita\",\n \"rights\": \"Licenças\",\n \"searchInputLabel\": \"termos de busca\",\n \"searchNextResult\": \"Próximo resultado\",\n \"searchNoResults\": \"Nenhum resultado encontrado\",\n \"searchPreviousResult\": \"Resultado anterior\",\n \"searchSubmitAria\": \"Realizar busca\",\n \"searchTitle\": \"Busca\",\n \"selectWorkspaceMenu\": \"Selecione um tipo de área de trabalho\",\n \"showingNumAnnotations_one\": \"Mostrando {{number}} anotações\",\n \"showZoomControls\": \"Mostrar controles de zoom\",\n \"sidebarPanelsNavigation\": \"Navegação por paineis na barra lateral\",\n \"single\": \"Individual\",\n \"startHere\": \"Comece aqui\",\n \"suggestSearch\": \"Procurar neste documento por \\\"{{ query }}\\\"\",\n \"theme\": \"Tema\",\n \"thumbnailList\": \"Lista de thumbnails\",\n \"thumbnailNavigation\": \"Thumbnails\",\n \"thumbnails\": \"Thumbnails\",\n \"toggleWindowSideBar\": \"Ver barra lateral\",\n \"tryAgain\": \"Tente novamente\",\n \"untitled\": \"[Sem título]\",\n \"view\": \"Visualizações\",\n \"welcome\": \"Bem-vindo ao Mirador\",\n \"window\": \"Janela: {{label}}\",\n \"windowMenu\": \"Opções de visualização de janelas e thumbnails\",\n \"windowNavigation\": \"Navegação de janelas\",\n \"windowPluginButtons\": \"Opções\",\n \"windowPluginMenu\": \"Opções de janela\",\n \"workspace\": \"Área de trabalho\",\n \"workspaceFullScreen\": \"Tela cheia\",\n \"workspaceMenu\": \"Configurações de área de trabalho\",\n \"workspaceOptions\": \"Opções de área de trabalho\",\n \"workspaceSelectionTitle\": \"Selecionar tipo de área de trabalho\",\n \"zoomIn\": \"Mais zoom\",\n \"zoomOut\": \"Menos zoom\",\n \"zoomReset\": \"Zerar zoom\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Informazioni su Mirador\",\n \"aboutThisItem\": \"Informazioni sull'oggetto\",\n \"addedFromUrl\": \"(Aggiunto dall'URL)\",\n \"addManifestUrl\": \"URL della risorsa\",\n \"addManifestUrlHelp\": \"L'URL di una risorsa IIIF\",\n \"addResource\": \"Aggiungi una risorsa\",\n \"annotationCanvasLabel_1/1\": \"Oggetto: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Sinistra: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Destra: [{{label}}]\",\n \"annotations\": \"Annotazioni\",\n \"attribution\": \"Attribuzione\",\n \"attributionTitle\": \"Diritti\",\n \"authenticationFailed\": \"Autenticazione fallita.\",\n \"authenticationRequired\": \"Autenticazione richiesta per l'accesso completo\",\n \"backToResults\": \"Torna ai risultati\",\n \"book\": \"Libro\",\n \"bottom\": \"Fondo\",\n \"cancel\": \"Cancella\",\n \"canvasIndex\": \"Indice\",\n \"changeTheme\": \"Cambia tema\",\n \"clearSearch\": \"pulisci\",\n \"close\": \"Chiudi\",\n \"closeAddResourceForm\": \"Chiudi il modulo\",\n \"closeAddResourceMenu\": \"Chiudi la lista di risorse\",\n \"closeCompanionWindow\": \"Chiudi il pannello\",\n \"closeWindow\": \"Chiudi finestra\",\n \"collapseSection\": \"Collassa la sezione \\\"{{section}}\\\"\",\n \"collapseSidePanel\": \"Collassa la barra laterale\",\n \"collection\": \"Collezione\",\n \"continue\": \"Continua\",\n \"copy\": \"Copia\",\n \"currentItem\": \"Oggetto corrente\",\n \"currentItem_1/1\": \"Oggetto corrente\",\n \"currentItem_1/2\": \"Sinistra\",\n \"currentItem_2/2\": \"Destra\",\n \"dark\": \"Tema scuro\",\n \"digitizedView\": \"Digitized view\",\n \"dismiss\": \"Dismiss\",\n \"displayNoAnnotations\": \"Nascondi evidenziazione\",\n \"downloadExport\": \"Esporta il workspace\",\n \"downloadExportWorkspace\": \"Esporta il workspace\",\n \"elastic\": \"Elastico\",\n \"elasticDescription\": \"Muovi e ridimensiona le finestre liberamente in un workspace illimitato. Le finestre possono sovrapporsi.\",\n \"emptyResourceList\": \"La tua lista di risorse è vuota.\",\n \"error\": \"Errore\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Si è verificato un errore.\",\n \"exitFullScreen\": \"Esci da schermo intero\",\n \"expandSection\": \"Espandi la sezione \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"Espandi la barra laterale\",\n \"exportCopied\": \"La configurazione del workspace è stata copiata nella tua clipboard\",\n \"fetchManifest\": \"Aggiungi\",\n \"fullScreen\": \"Schermo intero\",\n \"gallery\": \"Galleria\",\n \"hideZoomControls\": \"Nascondi i controlli di zoom\",\n \"highlightAllAnnotations\": \"Evidenzia tutto\",\n \"iiif_homepage\": \"Informazioni su questa risorsa\",\n \"iiif_manifest\": \"IIIF manifest\",\n \"iiif_renderings\": \"Formati alternativi\",\n \"iiif_seeAlso\": \"Vedi anche\",\n \"import\": \"Importa\",\n \"importWorkspace\": \"Importa workspace\",\n \"importWorkspaceHint\": \"Incolla una configurazione di Mirador 4 da importare\",\n \"item\": \"Oggetto: {{label}}\",\n \"itemList\": \"Lista compatta\",\n \"jsError\": \"Dettagli tecnici\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Lingua\",\n \"layer_hide\": \"Nascondi livello\",\n \"layer_move\": \"Sposta livello\",\n \"layer_opacity\": \"Opacità del livello\",\n \"layer_show\": \"Visualizza livello\",\n \"layers\": \"Livelli\",\n \"light\": \"Tema chiaro\",\n \"links\": \"Link\",\n \"listAllOpenWindows\": \"Vai alla finestra\",\n \"login\": \"Entra\",\n \"logout\": \"Esci\",\n \"manifestError\": \"La risorsa non può essere aggiunta:\",\n \"maximizeWindow\": \"Massimizza la finestra\",\n \"minimizeWindow\": \"Minimizza la finestra\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Risorse Mirador\",\n \"miradorViewer\": \"Visualizzatore Mirador\",\n \"more\": \"ancora...\",\n \"moreResults\": \"Più risultati\",\n \"mosaic\": \"Mosaico\",\n \"mosaicDescription\": \"Muovi e ridimensiona le finestre, tenendole all'interno dell'area visibile\",\n \"moveCompanionWindowToBottom\": \"Sposta in fondo\",\n \"moveCompanionWindowToRight\": \"Sposta a destra\",\n \"nextCanvas\": \"Oggetto Successivo\",\n \"noItemSelected\": \"Nessun oggetto selezionato\",\n \"numItems_one\": \"{{number}} oggetti\",\n \"numItems_other\": \"{{number}} oggetti\",\n \"off\": \"Off\",\n \"openCompanionWindow_annotations\": \"Annotazioni\",\n \"openCompanionWindow_attribution\": \"Diritti\",\n \"openCompanionWindow_canvas\": \"Indice\",\n \"openCompanionWindow_info\": \"Informazioni\",\n \"openCompanionWindow_layers\": \"Livelli\",\n \"openCompanionWindow_search\": \"Cerca\",\n \"openInCompanionWindow\": \"Apri in un pannello separato\",\n \"openWindows\": \"Finestre aperte in questo momento\",\n \"pagination\": \"{{current}} di {{total}}\",\n \"position\": \"Posizione\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Oggetto precedente\",\n \"related\": \"Contenuti collegati\",\n \"resource\": \"Risorsa\",\n \"retry\": \"Riprova\",\n \"right\": \"Right\",\n \"rights\": \"Licenza\",\n \"scroll\": \"Scorri\",\n \"searchInputLabel\": \"termini di ricerca\",\n \"searchNextResult\": \"Prossimo risultato\",\n \"searchNoResults\": \"Nessun risultato\",\n \"searchPreviousResult\": \"Risultato precedente\",\n \"searchResultsRemaining\": \"{{numLeft}} rimanenti\",\n \"searchSubmitAria\": \"Cerca\",\n \"searchTitle\": \"Cerca\",\n \"selectWorkspaceMenu\": \"Selezione il tipo di workspace\",\n \"showCollection\": \"Visualizza la collezione\",\n \"showingNumAnnotations_one\": \"Sto mostrando {{number}} annotazioni\",\n \"showingNumAnnotations_other\": \"Visualizzando {{number}} annotazioni\",\n \"showZoomControls\": \"Mostra i controlli di zoom\",\n \"sidebarPanelsNavigation\": \"Navigazione dei pannelli della barra laterale\",\n \"single\": \"Singolo\",\n \"startHere\": \"Inizia qui\",\n \"suggestSearch\": \"Cerca in questo documento: \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Sommario\",\n \"theme\": \"Tema\",\n \"thumbnailList\": \"Lista thumbnail\",\n \"thumbnailNavigation\": \"Thumbnails\",\n \"thumbnails\": \"Thumbnails\",\n \"toggleWindowSideBar\": \"Apri/Chiudi la barra\",\n \"totalCollections_one\": \"{{count}} collezione\",\n \"totalCollections_other\": \"{{count}} collezioni\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"totalManifests_other\": \"{{count}} manifests\",\n \"tryAgain\": \"Riprova\",\n \"untitled\": \"[senza titolo]\",\n \"view\": \"Visualizza\",\n \"viewWorkspaceConfiguration\": \"Visualizza la configurazione del workspace\",\n \"welcome\": \"Benvenuto in Mirador\",\n \"window\": \"Finestra: {{label}}\",\n \"windowMenu\": \"Visualizzazioni finestra e display thumbnail\",\n \"windowNavigation\": \"Navigazione finestra\",\n \"windowPluginButtons\": \"Opzioni\",\n \"windowPluginMenu\": \"Opzioni finestra\",\n \"workspace\": \"Workspace\",\n \"workspaceFullScreen\": \"Schermo intero\",\n \"workspaceMenu\": \"Configurazioni Workspace\",\n \"workspaceNavigation\": \"Navigazione del workspace\",\n \"workspaceOptions\": \"Opzioni Workspace\",\n \"workspaceSelectionTitle\": \"Seleziona il tipo di workspace\",\n \"zoomIn\": \"Zoom in\",\n \"zoomOut\": \"Zoom out\",\n \"zoomReset\": \"Reimposta zoom\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"О пројекту Mirador\",\n \"aboutThisItem\": \"Опис\",\n \"addedFromUrl\": \"(Додато са URL)\",\n \"addManifestUrl\": \"Локација ресурса\",\n \"addManifestUrlHelp\": \"URL IIIF ресурса\",\n \"addResource\": \"Додајте ресурс\",\n \"annotationCanvasLabel_1/1\": \"Страница: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Лева: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Десна: [{{label}}]\",\n \"annotations\": \"Анотације\",\n \"attribution\": \"Приступ\",\n \"attributionTitle\": \"Права\",\n \"authenticationFailed\": \"Неуспела аутентификација.\",\n \"authenticationRequired\": \"За потпуни приступ неопходна је аутентификација\",\n \"backToResults\": \"Повратак на резултате\",\n \"book\": \"Књига\",\n \"bottom\": \"На дну\",\n \"cancel\": \"Одустаните\",\n \"canvasIndex\": \"Индекс\",\n \"changeTheme\": \"Промените тему\",\n \"clearSearch\": \"обришите\",\n \"close\": \"Затворите\",\n \"closeAddResourceForm\": \"Затворите\",\n \"closeAddResourceMenu\": \"Затворите листу ресурса\",\n \"closeCompanionWindow\": \"Затворите панел\",\n \"closeWindow\": \"Затворите приказ\",\n \"collapseSection\": \"Сакријте \\\"{{section}}\\\" секцију\",\n \"collapseSidePanel\": \"Сакријте\",\n \"collection\": \"Колекција\",\n \"continue\": \"Наставите\",\n \"copy\": \"Копирајте\",\n \"currentItem\": \"Тренутна страница\",\n \"currentItem_1/1\": \"Тренутна страница\",\n \"currentItem_1/2\": \"Лева\",\n \"currentItem_2/2\": \"Десна\",\n \"dark\": \"Тамна тема\",\n \"digitizedView\": \"Приказ дигиталног објекта\",\n \"dismiss\": \"Откажите\",\n \"displayNoAnnotations\": \"Без приказа\",\n \"downloadExport\": \"Извезите радно окружење\",\n \"downloadExportWorkspace\": \"Извезите радно окружење\",\n \"elastic\": \"Еластични\",\n \"elasticDescription\": \"Слободно померајте и одредите величину приказа у неограниченом радном простору. Прикази могу бити већи од радног простора.\",\n \"emptyResourceList\": \"Ваша листа ресурса је празна\",\n \"error\": \"Грешка\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Дошло је до грешке\",\n \"exitFullScreen\": \"Изађите из приказа преко целог екрана\",\n \"expandSection\": \"Проширите \\\"{{section}}\\\" секцију\",\n \"expandSidePanel\": \"Прикажите\",\n \"exportCopied\": \"Конфигурација радног окружења је копирана у привремену меморију\",\n \"fetchManifest\": \"Додајте\",\n \"fullScreen\": \"Приказ у пуном екрану\",\n \"gallery\": \"Галерија\",\n \"hideZoomControls\": \"Сакријте контроле зума\",\n \"highlightAllAnnotations\": \"Приказ свих\",\n \"iiif_homepage\": \"О ресурсу\",\n \"iiif_manifest\": \"IIIF manifest\",\n \"iiif_renderings\": \"Додатни формати\",\n \"iiif_seeAlso\": \"Погледајте и\",\n \"import\": \"Увезите\",\n \"importWorkspace\": \"Увезите радно окружење\",\n \"importWorkspaceHint\": \"Убаците конфигурацију Mirador 4 како би могли да је увезете\",\n \"item\": \"Страница: {{label}}\",\n \"itemList\": \"Листа страница\",\n \"jsError\": \"Технички детаљи\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Језик приказа\",\n \"layer_hide\": \"Сакријте слој\",\n \"layer_move\": \"Померите слој\",\n \"layer_opacity\": \"Видљивост слоја\",\n \"layer_show\": \"Приказ слоја\",\n \"layers\": \"Слојеви\",\n \"light\": \"Светла тема\",\n \"links\": \"Линкови\",\n \"listAllOpenWindows\": \"Идите на приказ\",\n \"login\": \"Улогујте се\",\n \"logout\": \"Излогујте се\",\n \"manifestError\": \"Ресурс се не може додати\",\n \"maximizeWindow\": \"Максималан приказ\",\n \"minimizeWindow\": \"Минималан приказ\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador ресурси\",\n \"miradorViewer\": \"Mirador прегледач\",\n \"more\": \"још...\",\n \"moreResults\": \"Још резултата\",\n \"mosaic\": \"Мозаик\",\n \"mosaicDescription\": \"Померајте и одредите величину приказа који су у међусобној релацији, унутар видљивог оквира.\",\n \"moveCompanionWindowToBottom\": \"Пребаците на дно\",\n \"moveCompanionWindowToRight\": \"Померите у десну страну\",\n \"nextCanvas\": \"Следећа\",\n \"noItemSelected\": \"Нема изабраних објеката\",\n \"numItems_one\": \"{{number}} страница/це\",\n \"off\": \"Искључене\",\n \"openCompanionWindow_annotations\": \"Анотације\",\n \"openCompanionWindow_attribution\": \"Права\",\n \"openCompanionWindow_canvas\": \"Индекс\",\n \"openCompanionWindow_info\": \"Информације\",\n \"openCompanionWindow_layers\": \"Слојеви\",\n \"openCompanionWindow_search\": \"Претрага\",\n \"openInCompanionWindow\": \"Отворите у засебном панелу\",\n \"openWindows\": \"Тренутно отворени прикази\",\n \"pagination\": \"{{current}} од {{total}}\",\n \"position\": \"Позиција\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Претходна\",\n \"related\": \"Релације\",\n \"resource\": \"Ресурс\",\n \"retry\": \"Покушајте поново\",\n \"right\": \"Десно\",\n \"rights\": \"Лиценца\",\n \"scroll\": \"Померајте\",\n \"searchInputLabel\": \"претражите појам\",\n \"searchNextResult\": \"Следећи резултат\",\n \"searchNoResults\": \"Тражени појам није пронађен\",\n \"searchPreviousResult\": \"Претходни резултат\",\n \"searchSubmitAria\": \"Претражите\",\n \"searchTitle\": \"Претрага\",\n \"selectWorkspaceMenu\": \"Изаберите тип радног окружења\",\n \"showCollection\": \"Прикажи колекцију\",\n \"showingNumAnnotations_one\": \"Приказ {{number}} анотација/је\",\n \"showZoomControls\": \"Приказ контрола зума\",\n \"sidebarPanelsNavigation\": \"Навигација сајдбар панела\",\n \"single\": \"Појединачно\",\n \"startHere\": \"Започните\",\n \"suggestSearch\": \"Пронађите појам \\\"{{ query }}\\\" у овом документу\",\n \"tableOfContentsList\": \"Садржај\",\n \"theme\": \"Тема\",\n \"thumbnailList\": \"Листа сличица\",\n \"thumbnailNavigation\": \"Сличице\",\n \"thumbnails\": \"Сличице\",\n \"toggleWindowSideBar\": \"Сајдбар\",\n \"totalCollections_one\": \"{{count}} колекција/е\",\n \"totalManifests_one\": \"{{count}} објек(а)та\",\n \"tryAgain\": \"Покушајте поново\",\n \"untitled\": \"[Без наслова]\",\n \"view\": \"Преглед\",\n \"welcome\": \"Добродошли у прегледач Mirador\",\n \"window\": \"Приказ: {{label}}\",\n \"windowMenu\": \"Изглед прегледа и позиција сличица\",\n \"windowNavigation\": \"Навигација приказа\",\n \"windowPluginButtons\": \"Опције\",\n \"windowPluginMenu\": \"Опције приказа\",\n \"workspace\": \"Радни простор\",\n \"workspaceFullScreen\": \"Приказ преко целог екрана\",\n \"workspaceMenu\": \"Уређивање радног простора\",\n \"workspaceOptions\": \"Опције радног окружења\",\n \"workspaceSelectionTitle\": \"Изаберите тип радног окружења\",\n \"zoomIn\": \"Увећајте\",\n \"zoomOut\": \"Умањите\",\n \"zoomReset\": \"Ресет зума\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Om Projekt Mirador\",\n \"aboutThisItem\": \"Om det här objektet\",\n \"addedFromUrl\": \"(Tillagd från URL)\",\n \"addManifestUrl\": \"Webbadress till samling eller manifest\",\n \"addManifestUrlHelp\": \"URL till en IIIF-resurs\",\n \"addResource\": \"Lägg till resurs\",\n \"annotationCanvasLabel_1/1\": \"Objekt: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Vänster: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Höger: [{{label}}]\",\n \"annotations\": \"Noteringar\",\n \"attribution\": \"Tillskrivning\",\n \"attributionTitle\": \"Rättigheter\",\n \"authenticationFailed\": \"Autentisering misslyckades.\",\n \"authenticationRequired\": \"Autentisering krävs för full åtkomst\",\n \"backToResults\": \"Tillbaka till resultat\",\n \"book\": \"Bok\",\n \"bottom\": \"Nederkant\",\n \"cancel\": \"Avbryt\",\n \"canvasIndex\": \"Index\",\n \"changeTheme\": \"Ändra tema\",\n \"clearSearch\": \"Ta bort sökning\",\n \"close\": \"Stäng\",\n \"closeAddResourceForm\": \"Stäng formulär\",\n \"closeAddResourceMenu\": \"Stäng resurslista\",\n \"closeCompanionWindow\": \"Stäng panel\",\n \"closeWindow\": \"Stäng fönster\",\n \"collapseSection\": \"Stäng sektionen \\\"{{section}}\\\"\",\n \"collapseSidePanel\": \"Stäng sidofält\",\n \"collection\": \"Samling\",\n \"continue\": \"Fortsätt\",\n \"copy\": \"Kopiera\",\n \"currentItem\": \"Aktuellt objekt\",\n \"currentItem_1/1\": \"Aktuellt objekt\",\n \"currentItem_1/2\": \"Vänster\",\n \"currentItem_2/2\": \"Höger\",\n \"dark\": \"Mörkt tema\",\n \"digitizedView\": \"Digitaliserad vy\",\n \"dismiss\": \"Stäng\",\n \"displayNoAnnotations\": \"Avmarkera alla\",\n \"downloadExport\": \"Exportera arbetsyta\",\n \"downloadExportWorkspace\": \"Exportera arbetsyta\",\n \"elastic\": \"Elastisk\",\n \"elasticDescription\": \"Flytta och ändra storlek på fönster fritt i en obegränsad arbetsyta. Fönster kan överlappa.\",\n \"emptyResourceList\": \"Din resurslista är tom\",\n \"error\": \"Error\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Ett problem uppstod\",\n \"exitFullScreen\": \"Lämna helskärmsläge\",\n \"expandSection\": \"Expandera sektionen \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"Expandera sidofält\",\n \"exportCopied\": \"Konfiguration av arbetsytan har kopierats till dina urklipp\",\n \"fetchManifest\": \"Lägg till\",\n \"fullScreen\": \"Helskärmsläge\",\n \"gallery\": \"Galleri\",\n \"hideZoomControls\": \"Dölj zoomkontroller\",\n \"highlightAllAnnotations\": \"Markera alla\",\n \"iiif_homepage\": \"Om den här resursen\",\n \"iiif_manifest\": \"IIIF manifest\",\n \"iiif_renderings\": \"Alternativa format\",\n \"iiif_seeAlso\": \"Se även\",\n \"import\": \"Importera\",\n \"importWorkspace\": \"Importera arbetsyta\",\n \"importWorkspaceHint\": \"Klistra in en Mirador 4 konfiguration att importera\",\n \"item\": \"Objekt: {{label}}\",\n \"itemList\": \"Objektlista\",\n \"jsError\": \"Tekniska detaljer\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Språk\",\n \"layer_hide\": \"Dölj lager\",\n \"layer_move\": \"Flytta lager\",\n \"layer_opacity\": \"Lageropacitet\",\n \"layer_show\": \"Visa lager\",\n \"layers\": \"Lager\",\n \"light\": \"Ljust tema\",\n \"links\": \"Länkar\",\n \"listAllOpenWindows\": \"Gå till fönster\",\n \"login\": \"Logga in\",\n \"logout\": \"Logga ut\",\n \"manifestError\": \"Resursen kan inte läggas till:\",\n \"maximizeWindow\": \"Maximera fönster\",\n \"minimizeWindow\": \"Minimera fönster\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Miradorresurser\",\n \"miradorViewer\": \"Mirador bildvisare\",\n \"more\": \"mer...\",\n \"moreResults\": \"Fler resultat\",\n \"mosaic\": \"Mosaik\",\n \"mosaicDescription\": \"Flytta och ändra storlek på fönster i relation till varandra, innanför den synliga ramen.\",\n \"moveCompanionWindowToBottom\": \"Flytta till botten\",\n \"moveCompanionWindowToRight\": \"Flytta till höger\",\n \"nextCanvas\": \"Nästa objekt\",\n \"noItemSelected\": \"Inga valda objekt\",\n \"numItems_one\": \"{{number}} objekt\",\n \"off\": \"Av\",\n \"openCompanionWindow_annotations\": \"Noteringar\",\n \"openCompanionWindow_attribution\": \"Rättigheter\",\n \"openCompanionWindow_canvas\": \"Index\",\n \"openCompanionWindow_info\": \"Information\",\n \"openCompanionWindow_layers\": \"Lager\",\n \"openCompanionWindow_search\": \"Sök\",\n \"openInCompanionWindow\": \"Öppna i separat panel\",\n \"openWindows\": \"Öppna fönster\",\n \"pagination\": \"{{current}} av {{total}}\",\n \"position\": \"Position\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Föregående objekt\",\n \"related\": \"Relaterat\",\n \"resource\": \"Resurs\",\n \"retry\": \"Försök igen\",\n \"right\": \"Till höger\",\n \"rights\": \"Licens\",\n \"scroll\": \"Scrolla\",\n \"searchInputLabel\": \"Sökord\",\n \"searchNextResult\": \"Nästa resultat\",\n \"searchNoResults\": \"Inga resultat hittades\",\n \"searchPreviousResult\": \"Föregående resultat\",\n \"searchResultsRemaining\": \"{{numLeft}} kvar\",\n \"searchSubmitAria\": \"Sök\",\n \"searchTitle\": \"Sök\",\n \"selectWorkspaceMenu\": \"Välj typ av arbetsyta\",\n \"showCollection\": \"Visa samling\",\n \"showingNumAnnotations_one\": \"Visar {{number}} noteringar\",\n \"showZoomControls\": \"Visa zoomkontroller\",\n \"sidebarPanelsNavigation\": \"Sidofältspaneler navigering\",\n \"single\": \"En och en\",\n \"startHere\": \"Börja här\",\n \"suggestSearch\": \"Sök i detta dokument efter \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Innehållsförteckning\",\n \"theme\": \"Tema\",\n \"thumbnailList\": \"Miniatyrlista\",\n \"thumbnailNavigation\": \"Miniatyrer\",\n \"thumbnails\": \"Miniatyrer\",\n \"toggleWindowSideBar\": \"Visa/dölj sidofält\",\n \"totalCollections_one\": \"{{count}} samlingar\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"tryAgain\": \"Försök igen\",\n \"untitled\": \"[namnlös]\",\n \"view\": \"Vy\",\n \"welcome\": \"Välkommen till Mirador\",\n \"window\": \"Fönster: {{label}}\",\n \"windowMenu\": \"Fönstervyer & miniatyrdisplay\",\n \"windowNavigation\": \"Fönsternavigation\",\n \"windowPluginButtons\": \"Inställningar\",\n \"windowPluginMenu\": \"Fönsterinställningar\",\n \"workspace\": \"Arbetsyta\",\n \"workspaceFullScreen\": \"Helskärmsläge\",\n \"workspaceMenu\": \"Inställningar för arbetsyta\",\n \"workspaceNavigation\": \"Navigera i arbetsyta\",\n \"workspaceOptions\": \"Fler val för arbetsyta\",\n \"workspaceSelectionTitle\": \"Välj typ av arbetsyta\",\n \"zoomIn\": \"Zooma in\",\n \"zoomOut\": \"Zooma ut\",\n \"zoomReset\": \"Återställ zoom\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Apie Project Mirador\",\n \"aboutThisItem\": \"Apie šį įrašą\",\n \"addedFromUrl\": \"(Pridėta naudojant URL)\",\n \"addManifestUrl\": \"Šaltinio adresas\",\n \"addManifestUrlHelp\": \"Nuoroda į IIIF šaltinį\",\n \"addResource\": \"Pridėti šaltinį\",\n \"annotationCanvasLabel_1/1\": \"Įrašas: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Kairė: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Dešinė: [{{label}}]\",\n \"annotations\": \"Anotacijos\",\n \"attribution\": \"Priskyrimas\",\n \"attributionTitle\": \"Teisės\",\n \"authenticationFailed\": \"Autentifikavimo klaida.\",\n \"authenticationRequired\": \"Pilnai prieigai būtina autentifikacija\",\n \"backToResults\": \"Grįžti į rezultatus\",\n \"book\": \"Knyga\",\n \"bottom\": \"Apačia\",\n \"cancel\": \"Atšaukti\",\n \"canvasIndex\": \"Indeksas\",\n \"changeTheme\": \"Keisti temą\",\n \"clearSearch\": \"valyti\",\n \"closeAddResourceForm\": \"Uždaryti paraišką\",\n \"closeAddResourceMenu\": \"Uždaryti šaltinių sąrašą\",\n \"closeCompanionWindow\": \"Uždaryti panelę\",\n \"closeWindow\": \"Uždaryti langą\",\n \"collapseSection\": \"Suskleisti \\\"{{section}}\\\" sekciją\",\n \"collapseSidePanel\": \"Suskleisti šoninę juostą\",\n \"continue\": \"Tęsti\",\n \"copy\": \"Kopijuoti\",\n \"currentItem\": \"Dabartinis įrašas\",\n \"currentItem_1/1\": \"Dabartinis įrašas\",\n \"currentItem_1/2\": \"Kairė\",\n \"currentItem_2/2\": \"Dešinė\",\n \"dark\": \"Tamsi tema\",\n \"digitizedView\": \"Skaitmenintas vaizdas\",\n \"dismiss\": \"Atmesti\",\n \"displayNoAnnotations\": \"Slėpti viską\",\n \"downloadExport\": \"Išsaugoti darbalaukį\",\n \"downloadExportWorkspace\": \"Išsaugoti darbalaukį\",\n \"elastic\": \"Lankstus\",\n \"elasticDescription\": \"Langų dydis ir vieta gali būti laisvai valdomi. Langai gali persidengti.\",\n \"emptyResourceList\": \"Jūsų šaltinių sąrašas yra tuščias\",\n \"error\": \"Klaida\",\n \"errorDialogConfirm\": \"Gerai\",\n \"errorDialogTitle\": \"Įvyko klaida\",\n \"exitFullScreen\": \"Išjungti pilno ekrano režimą\",\n \"expandSection\": \"Išplėsti \\\"{{section}}\\\" sekciją\",\n \"expandSidePanel\": \"Išplėsti šoninę juostą\",\n \"exportCopied\": \"Darbalaukio nustatymai nukopijuoti\",\n \"fetchManifest\": \"Pridėti\",\n \"fullScreen\": \"Pilnas ekranas\",\n \"gallery\": \"Galerija\",\n \"hideZoomControls\": \"Slėpti priartinimo valdymą\",\n \"highlightAllAnnotations\": \"Paryškinti viską\",\n \"iiif_homepage\": \"Apie šį šaltinį\",\n \"iiif_manifest\": \"IIIF manifestas\",\n \"iiif_renderings\": \"Kiti formatai\",\n \"iiif_seeAlso\": \"Susiję\",\n \"import\": \"Įkelti\",\n \"importWorkspace\": \"Įkelti darbalaukį\",\n \"importWorkspaceHint\": \"Įterpkite Mirador 4 nustatymus įkėlimui\",\n \"item\": \"Įrašas: {{label}}\",\n \"itemList\": \"Įrašų sąrašas\",\n \"jsError\": \"Techninė informacija\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Kalba\",\n \"layer_hide\": \"Slėpti sluoksnį\",\n \"layer_move\": \"Perkelti sluoksnį\",\n \"layer_opacity\": \"Sluoksnio nepermatomumas\",\n \"layer_show\": \"Rodyti sluoksnį\",\n \"layers\": \"Sluoksniai\",\n \"light\": \"Šviesi tema\",\n \"links\": \"Nuorodos\",\n \"listAllOpenWindows\": \"Rodyti aktyvius langus\",\n \"login\": \"Prisijungti\",\n \"logout\": \"Atsijungti\",\n \"manifestError\": \"Šaltinis negali būti pridėtas:\",\n \"maximizeWindow\": \"Išdidinti langą\",\n \"minimizeWindow\": \"Sumažinti langą\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador šaltiniai\",\n \"miradorViewer\": \"Mirador žiūryklė\",\n \"more\": \"daugiau...\",\n \"moreResults\": \"Daugiau rezultatų\",\n \"mosaic\": \"Mosaic\",\n \"mosaicDescription\": \"Langų dydžio ir pozicijos keitimai apribojami ekrano erdvėje.\",\n \"moveCompanionWindowToBottom\": \"Perkelti į apačią\",\n \"moveCompanionWindowToRight\": \"Perkelti į dešinę\",\n \"nextCanvas\": \"Kitas įrašas\",\n \"numItems_one\": \"{{number}} įrašas (-ai)\",\n \"off\": \"Išjungti\",\n \"openCompanionWindow_annotations\": \"Anotacijos\",\n \"openCompanionWindow_attribution\": \"Teisės\",\n \"openCompanionWindow_canvas\": \"Indeksas\",\n \"openCompanionWindow_info\": \"Informacija\",\n \"openCompanionWindow_layers\": \"Sluoksniai\",\n \"openCompanionWindow_search\": \"Paieška\",\n \"openInCompanionWindow\": \"Atidaryti kaip naują panelę\",\n \"openWindows\": \"Aktyvųs langai\",\n \"pagination\": \"{{current}} iš {{total}}\",\n \"position\": \"Pozicija\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Buvęs įrašas\",\n \"related\": \"Susiję\",\n \"resource\": \"Šaltinis\",\n \"retry\": \"Pabandyti iš naujo\",\n \"right\": \"Dešinė\",\n \"rights\": \"Teisės\",\n \"scroll\": \"Paslinkti\",\n \"searchInputLabel\": \"paieškos terminas\",\n \"searchNextResult\": \"Kitas rezultatas\",\n \"searchNoResults\": \"Nėra rezultatų\",\n \"searchPreviousResult\": \"Buvęs rezultatas\",\n \"searchSubmitAria\": \"Pateikti paieškos užklausą\",\n \"searchTitle\": \"Ieškoti\",\n \"selectWorkspaceMenu\": \"Pasirinkti darbalaukio tipą\",\n \"showCollection\": \"Rodyti kolekciją\",\n \"showingNumAnnotations_one\": \"Rodoma {{number}} anotacija (-os)\",\n \"showZoomControls\": \"Rodyti priartinimo valdymą\",\n \"sidebarPanelsNavigation\": \"Šoninės juostos valdymas\",\n \"single\": \"Atskiras\",\n \"startHere\": \"Pradėkite čia\",\n \"suggestSearch\": \"Ieškoti \\\"{{ query }}\\\" visame documente\",\n \"tableOfContentsList\": \"Turinys\",\n \"theme\": \"Tema\",\n \"thumbnailList\": \"Miniatiūrų sąrašas\",\n \"thumbnailNavigation\": \"Miniatiūros\",\n \"thumbnails\": \"Miniatiūros\",\n \"toggleWindowSideBar\": \"Perjungti šoninę juostą\",\n \"totalCollections_one\": \"{{count}} kolekcija (-os)\",\n \"totalManifests_one\": \"{{count}} šaltinis (-iai)\",\n \"tryAgain\": \"Bandykite dar kartą\",\n \"untitled\": \"[Be pavadinimo]\",\n \"view\": \"Žiūrėti\",\n \"welcome\": \"Sveiki atvykę į Mirador\",\n \"window\": \"Langas: {{label}}\",\n \"windowMenu\": \"Langų & miniatiūrų atvaizdavimas\",\n \"windowNavigation\": \"Langų valdymas\",\n \"windowPluginButtons\": \"Pasirinkimai\",\n \"windowPluginMenu\": \"Langų pasirinkimai\",\n \"workspace\": \"Darbalaukis\",\n \"workspaceFullScreen\": \"Pilnas ekranas\",\n \"workspaceMenu\": \"Darbalaukio nustatymai\",\n \"workspaceNavigation\": \"Darbalaukio valdymas\",\n \"workspaceOptions\": \"Darbalaukio pasirinkimai\",\n \"workspaceSelectionTitle\": \"Pasirinkite darbalaukio tipą\",\n \"zoomIn\": \"Priartinti\",\n \"zoomOut\": \"Atitolinti\",\n \"zoomReset\": \"Atstatyti priartinimą\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Về dự án Mirador\",\n \"aboutThisItem\": \"Về khoản mục này\",\n \"addedFromUrl\": \"(Được thêm từ URL)\",\n \"addManifestUrl\": \"Vị trí tài nguyên\",\n \"addManifestUrlHelp\": \"URL của tài nguyên IIIF\",\n \"addResource\": \"Bổ sung tài nguyên\",\n \"annotationCanvasLabel_1/1\": \"Khoản mục: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Trái: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Phải: [{{label}}]\",\n \"annotations\": \"Chú giải\",\n \"attribution\": \"Quyền hạn\",\n \"attributionTitle\": \"Quyền\",\n \"authenticationFailed\": \"Xác thực thất bại.\",\n \"authenticationRequired\": \"Xác thực được yêu cầu cho truy nhập đầy đủ\",\n \"backToResults\": \"Trở lại kết quả\",\n \"book\": \"Sách\",\n \"bottom\": \"Đáy\",\n \"cancel\": \"Huỷ bỏ\",\n \"canvasIndex\": \"Chỉ mục\",\n \"changeTheme\": \"Đổi chủ đề\",\n \"clearSearch\": \"xoá\",\n \"close\": \"Đóng\",\n \"closeAddResourceForm\": \"Đóng mẫu\",\n \"closeAddResourceMenu\": \"Đóng danh sách tài nguyên\",\n \"closeCompanionWindow\": \"Đóng panel\",\n \"closeWindow\": \"Đóng cửa sổ\",\n \"collapseSection\": \"Co sập {{section}} mục\",\n \"collapseSidePanel\": \"Co sập thanh bên\",\n \"collection\": \"Tuyển tập\",\n \"continue\": \"Tiếp tục\",\n \"copy\": \"Sao\",\n \"currentItem\": \"Khoản mục hiện thời\",\n \"currentItem_1/1\": \"Khoản mục hiện thời\",\n \"currentItem_1/2\": \"Trái\",\n \"currentItem_2/2\": \"Phải\",\n \"dark\": \"Chủ đề tối\",\n \"digitizedView\": \"Cái nhìn số hoá\",\n \"dismiss\": \"Bác bỏ\",\n \"displayNoAnnotations\": \"Không làm nổi bật\",\n \"downloadExport\": \"Vùng xuất khẩu\",\n \"downloadExportWorkspace\": \"Vùng xuất khẩu\",\n \"elastic\": \"Co giãn\",\n \"elasticDescription\": \"Di chuyển và định cỡ cửa sổ tự do trong vùng vô giới hạn. Cửa sổ có thể chèn lấp.\",\n \"emptyResourceList\": \"Danh sách tài nguyên của bạn là trống\",\n \"error\": \"Lỗi\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Lỗi đã xuất hiện\",\n \"exitFullScreen\": \"Ra khỏi toàn màn hình\",\n \"expandSection\": \"Mở rộng {{section}} mục\",\n \"expandSidePanel\": \"Mở rộng thanh bên\",\n \"exportCopied\": \"Cấu hình vùng làm việc được sao vào bảng đệm của bạn\",\n \"fetchManifest\": \"Thêm\",\n \"fullScreen\": \"Toàn màn hình\",\n \"gallery\": \"Phòng tranh\",\n \"hideZoomControls\": \"Ẩn điều khiển thu phóng\",\n \"highlightAllAnnotations\": \"Làm nổi bật tất\",\n \"iiif_homepage\": \"Về tài nguyên này\",\n \"iiif_manifest\": \"Bản kê IIIF\",\n \"iiif_renderings\": \"Dạng thức luân phiên\",\n \"iiif_seeAlso\": \"Cũng xem\",\n \"import\": \"Nhập khẩu\",\n \"importWorkspace\": \"Vùng nhập khẩu\",\n \"importWorkspaceHint\": \"Dán cấu hình Mirador 4 để được nhập khẩu\",\n \"item\": \"Khoản mục: {{label}}\",\n \"itemList\": \"Danh sách khoản mục\",\n \"jsError\": \"Chi tiết kĩ thuật\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Ngôn ngữ\",\n \"layer_hide\": \"Giấu tầng\",\n \"layer_move\": \"Chuyển tầng\",\n \"layer_opacity\": \"Làm mờ tầng\",\n \"layer_show\": \"Hiện tầng\",\n \"layers\": \"Tầng\",\n \"light\": \"Chủ đề sáng\",\n \"links\": \"Móc nối\",\n \"listAllOpenWindows\": \"Nhảy tới cửa sổ\",\n \"login\": \"Đăng nhập\",\n \"logout\": \"Đăng xuất\",\n \"manifestError\": \"Tài nguyên không thể được bổ sung:\",\n \"maximizeWindow\": \"Cực đại cửa sổ\",\n \"minimizeWindow\": \"Cực tiểu cửa sổ\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Tài nguyên Mirador\",\n \"miradorViewer\": \"Bộ xem Mirador\",\n \"more\": \"thêm...\",\n \"moreResults\": \"Thêm kết quả\",\n \"mosaic\": \"Mosaic\",\n \"mosaicDescription\": \"Di chuyển và định cỡ cửa sổ trong quan hệ lẫn nhau, bên trong khung thấy được.\",\n \"moveCompanionWindowToBottom\": \"Chuyển tới đáy\",\n \"moveCompanionWindowToRight\": \"Chuyển sang phải\",\n \"nextCanvas\": \"Khoản mục tiếp\",\n \"noItemSelected\": \"Không khoản mục nào được chọn\",\n \"numItems_one\": \"{{number}} khoản mục\",\n \"off\": \"Off\",\n \"openCompanionWindow_annotations\": \"Chú giải\",\n \"openCompanionWindow_attribution\": \"Quyền\",\n \"openCompanionWindow_canvas\": \"Chỉ mục\",\n \"openCompanionWindow_info\": \"Thông tin\",\n \"openCompanionWindow_layers\": \"Tầng\",\n \"openCompanionWindow_search\": \"Tìm\",\n \"openInCompanionWindow\": \"Mở trong ngăn tách rời\",\n \"openWindows\": \"Cửa sổ mở hiện thời\",\n \"pagination\": \"{{current}} trong {{total}}\",\n \"position\": \"Vị trí\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Khoản mục trước\",\n \"related\": \"Có liên quan\",\n \"resource\": \"Tài nguyên\",\n \"retry\": \"Thử lại\",\n \"right\": \"Quyền\",\n \"rights\": \"Cấp phép\",\n \"scroll\": \"Cuộn\",\n \"searchInputLabel\": \"Từ tìm kiếm\",\n \"searchNextResult\": \"Kết quả tiếp\",\n \"searchNoResults\": \"Không tìm được kết quả nào\",\n \"searchPreviousResult\": \"Kết quả trước\",\n \"searchSubmitAria\": \"Đệ trình việc tìm\",\n \"searchTitle\": \"Tìm\",\n \"selectWorkspaceMenu\": \"Chọn kiểu vùng làm việc\",\n \"showCollection\": \"Hiện bộ sưu tập\",\n \"showingNumAnnotations_one\": \"Hiện {{number}} chú giải\",\n \"showZoomControls\": \"Hiện kiểm soát thu phóng\",\n \"sidebarPanelsNavigation\": \"Dẫn lái ngăn thanh bên\",\n \"single\": \"Chỉ một\",\n \"startHere\": \"Bắt đầu ở đây\",\n \"suggestSearch\": \"Tìm tài liệu này cho \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Mục lục\",\n \"theme\": \"Chủ đề\",\n \"thumbnailList\": \"Danh sách ảnh thu nhỏ\",\n \"thumbnailNavigation\": \"Ảnh thu nhỏ\",\n \"thumbnails\": \"Ảnh thu nhỏ\",\n \"toggleWindowSideBar\": \"chốt thanh bên\",\n \"totalCollections_one\": \"{{count}} bộ sưu tập\",\n \"totalManifests_one\": \"{{count}} bản kê\",\n \"tryAgain\": \"Thử lại\",\n \"untitled\": \"[Untitled]\",\n \"view\": \"Xem\",\n \"welcome\": \"Chào mừng bạn tới Mirador\",\n \"window\": \"Cửa sổ: {{label}}\",\n \"windowMenu\": \"Xem cửa sổ & hiển thị ảnh thu nhỏ\",\n \"windowNavigation\": \"Dẫn lái cửa sổ\",\n \"windowPluginButtons\": \"Tuỳ chọn\",\n \"windowPluginMenu\": \"Tuỳ chọn cửa sổ\",\n \"workspace\": \"Vùng làm việc\",\n \"workspaceFullScreen\": \"Toàn màn hình\",\n \"workspaceMenu\": \"Thiết đặt vùng làm việc\",\n \"workspaceNavigation\": \"Dẫn lái vùng làm việc\",\n \"workspaceOptions\": \"Tuỳ chọn vùng làm việc\",\n \"workspaceSelectionTitle\": \"Chọn kiểu vùng làm việc\",\n \"zoomIn\": \"Thu nhỏ\",\n \"zoomOut\": \"Phóng to\",\n \"zoomReset\": \"Đặt lại thu phóng\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"За проекта Mirador\",\n \"aboutThisItem\": \"За този елемент\",\n \"addedFromUrl\": \"(Добавено от линк)\",\n \"addManifestUrl\": \"Адрес на ресурса\",\n \"addManifestUrlHelp\": \"Адресът на IIIF ресурса\",\n \"addResource\": \"Добавяне на ресурс\",\n \"annotationCanvasLabel_1/1\": \"Елемент: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Ляво: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Дясно: [{{label}}]\",\n \"annotations\": \"Анотации\",\n \"attribution\": \"Принос\",\n \"attributionTitle\": \"Права\",\n \"authenticationFailed\": \"Неуспешна аутентикация.\",\n \"authenticationRequired\": \"Необходима е аутентикация за пълен достъп\",\n \"backToResults\": \"Назад към ресултатите\",\n \"book\": \"Книга\",\n \"bottom\": \"Долу\",\n \"cancel\": \"Отказ\",\n \"canvasIndex\": \"Индекс\",\n \"changeTheme\": \"Промяна на темата\",\n \"clearSearch\": \"изчистване\",\n \"close\": \"Затвори\",\n \"closeAddResourceForm\": \"Затваряне на формата\",\n \"closeAddResourceMenu\": \"Затваряне на списъка с ресурси\",\n \"closeCompanionWindow\": \"Затваряне на панела\",\n \"closeWindow\": \"Затваряне на прозореца\",\n \"collapseSection\": \"Свиване на секция \\\"{{section}}\\\"\",\n \"collapseSidePanel\": \"Свиване на страничен панел\",\n \"collection\": \"Колекция\",\n \"continue\": \"Продължи\",\n \"copy\": \"Копиране\",\n \"currentItem\": \"Текущ елемент\",\n \"currentItem_1/1\": \"Текущ елемент\",\n \"currentItem_1/2\": \"Ляво\",\n \"currentItem_2/2\": \"Дясно\",\n \"dark\": \"Тъмен режим\",\n \"digitizedView\": \"Цифровизиран преглед\",\n \"dismiss\": \"Отхвърляне\",\n \"displayNoAnnotations\": \"Изчистване на маркирането\",\n \"downloadExport\": \"Експорт на работното пространство\",\n \"downloadExportWorkspace\": \"Експорт на работното пространство\",\n \"elastic\": \"Еластичен\",\n \"elasticDescription\": \"Премествайте и оразмерявайте прозорците свободно в неограничено работно пространство. Прозорците могат да се застъпват.\",\n \"emptyResourceList\": \"Списъкът с ресурси е празен\",\n \"error\": \"Грешка\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Възникна грешка\",\n \"exitFullScreen\": \"Изход от цял екран\",\n \"expandSection\": \"Разширяване на секция \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"разширяване на страничния панел\",\n \"exportCopied\": \"Конфигурацията на работното пространство е копирана в клипборда\",\n \"fetchManifest\": \"Добавяне\",\n \"fullScreen\": \"Цял екран\",\n \"gallery\": \"Галерия\",\n \"hideZoomControls\": \"Скриване на контролите за мащабиране\",\n \"highlightAllAnnotations\": \"Маркиране на всичко\",\n \"iiif_homepage\": \"За този ресурс\",\n \"iiif_manifest\": \"IIIF манифест\",\n \"iiif_related\": \"Свързано\",\n \"iiif_renderings\": \"Алтернативни формати\",\n \"iiif_seeAlso\": \"Вижте също\",\n \"import\": \"Импорт\",\n \"importWorkspace\": \"Импорт на работно пространство\",\n \"importWorkspaceHint\": \"Поставете Mirador 4 конфигурация за импорт\",\n \"item\": \"Елемент: {{label}}\",\n \"itemList\": \"Списък с елементи\",\n \"jsError\": \"Технически детайли\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Език\",\n \"layer_hide\": \"Скриване на слой\",\n \"layer_move\": \"Преместване на слой\",\n \"layer_opacity\": \"Прозрачност на слой\",\n \"layer_show\": \"Показване на слой\",\n \"layers\": \"Слоеве\",\n \"light\": \"Светъл режим\",\n \"links\": \"Връзки\",\n \"listAllOpenWindows\": \"Към прозорец\",\n \"login\": \"Вход\",\n \"logout\": \"Изход\",\n \"manifestError\": \"Ресурсът не може да бъде добавен:\",\n \"maximizeWindow\": \"Увеличаване на прозореца\",\n \"minimizeWindow\": \"Минимизиране на прозореца\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador ресурси\",\n \"miradorViewer\": \"Mirador viewer\",\n \"more\": \"още...\",\n \"moreResults\": \"Още резултати\",\n \"mosaic\": \"Мозайка\",\n \"mosaicDescription\": \"Премествайте и оразмерявайте прозорците помежду им в рамките на видимата рамка.\",\n \"moveCompanionWindowToBottom\": \"Преместване отдолу\",\n \"moveCompanionWindowToRight\": \"Преместване вдясно\",\n \"multipartCollection\": \"Колекция от много части\",\n \"nextCanvas\": \"Следващ елемент\",\n \"noItemSelected\": \"Не е избран елемент\",\n \"numItems\": \"{{number}} елемент\",\n \"numItems_plural\": \"{{number}} елемента\",\n \"off\": \"Изключено\",\n \"openCompanionWindow_annotations\": \"Анотации\",\n \"openCompanionWindow_attribution\": \"Права\",\n \"openCompanionWindow_canvas\": \"Индекс\",\n \"openCompanionWindow_info\": \"Информация\",\n \"openCompanionWindow_layers\": \"Слоеве\",\n \"openCompanionWindow_search\": \"Търсене\",\n \"openInCompanionWindow\": \"Отваряне в отделен панел\",\n \"openWindows\": \"Текущо отворени прозорци\",\n \"pagination\": \"{{current}} от {{total}}\",\n \"position\": \"Позиция\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Предишен елемент\",\n \"related\": \"Свързано\",\n \"resource\": \"Ресурс\",\n \"retry\": \"Опитайте отново\",\n \"right\": \"Дясно\",\n \"rights\": \"Лиценз\",\n \"scroll\": \"Скрол\",\n \"searchInputLabel\": \"термини за търсене\",\n \"searchNextResult\": \"Следващ резултат\",\n \"searchNoResults\": \"Не са намерени резултати\",\n \"searchPreviousResult\": \"Предишен резултат\",\n \"searchResultsRemaining\": \"{{numLeft}} оставащи\",\n \"searchSubmitAria\": \"Търси\",\n \"searchTitle\": \"Търсене\",\n \"selectWorkspaceMenu\": \"Посочете тип работно пространство\",\n \"showCollection\": \"Показване на колекция\",\n \"showingNumAnnotations\": \"Показване на {{number}} анотация\",\n \"showingNumAnnotations_plural\": \"Показване на {{number}} анотации\",\n \"showZoomControls\": \"Показване на контролите за мащабиране\",\n \"sidebarPanelsNavigation\": \"Навигация на страничните панели\",\n \"single\": \"Единичен\",\n \"startHere\": \"Започнете оттук\",\n \"suggestSearch\": \"Търсене в този документ за \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Съдържание\",\n \"theme\": \"Тема\",\n \"thumbnailList\": \"Списък с представителни изображения\",\n \"thumbnailNavigation\": \"Представителни изображения\",\n \"thumbnails\": \"Представителни изображения\",\n \"toggleWindowSideBar\": \"Превключване на страничния панел\",\n \"totalCollections\": \"{{count}} колекция\",\n \"totalCollections_plural\": \"{{count}} колекции\",\n \"totalManifests\": \"{{count}} манифест\",\n \"totalManifests_plural\": \"{{count}} манифеста\",\n \"tryAgain\": \"Опитайте отново\",\n \"untitled\": \"[Неозаглавено]\",\n \"view\": \"Изглед\",\n \"viewWorkspaceConfiguration\": \"Преглед на конфигурацията на работното пространство\",\n \"welcome\": \"Добре дошли в Mirador\",\n \"window\": \"Прозорец: {{label}}\",\n \"windowMenu\": \"Изгледи на прозорците и на елементите\",\n \"windowNavigation\": \"Навигация на прозорците\",\n \"windowPluginButtons\": \"Настройки\",\n \"windowPluginMenu\": \"Настройки на прозорците\",\n \"workspace\": \"Работно пространство\",\n \"workspaceFullScreen\": \"Цял екран\",\n \"workspaceMenu\": \"Настройки на работното пространство\",\n \"workspaceNavigation\": \"Навигация на работното пространство\",\n \"workspaceOptions\": \"Опции за работното пространство\",\n \"workspaceSelectionTitle\": \"Изберете тип на работно пространство\",\n \"zoomIn\": \"Увеличаване\",\n \"zoomOut\": \"Намаляване\",\n \"zoomReset\": \"Нулиране\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"Om Projekt Mirador\",\n \"aboutThisItem\": \"Om dette objektet\",\n \"addedFromUrl\": \"(Lagt til fra URL)\",\n \"addManifestUrl\": \"Nettadresse til samling eller manifest\",\n \"addManifestUrlHelp\": \"URL til en IIIF-ressurs\",\n \"addResource\": \"Legg til ressurs\",\n \"annotationCanvasLabel_1/1\": \"Objekt: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Venstre: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Høyre: [{{label}}]\",\n \"annotations\": \"Annoteringer\",\n \"attribution\": \"Tilskrivelse\",\n \"attributionTitle\": \"Rettigheter\",\n \"authenticationFailed\": \"Autentiseringen feilet.\",\n \"authenticationRequired\": \"Autentisering kreves for full tilgang\",\n \"backToResults\": \"Tilbake til resultat\",\n \"book\": \"Bok\",\n \"bottom\": \"Nederst\",\n \"cancel\": \"Avbryt\",\n \"canvasIndex\": \"Index\",\n \"changeTheme\": \"Skift tema\",\n \"clearSearch\": \"Fjern søket\",\n \"close\": \"Lukk\",\n \"closeAddResourceForm\": \"Lukk skjemaet\",\n \"closeAddResourceMenu\": \"Lukk ressurslisten\",\n \"closeCompanionWindow\": \"Lukk panelet\",\n \"closeWindow\": \"Lukk vinduet\",\n \"collapseSection\": \"Lukk seksjonen \\\"{{section}}\\\"\",\n \"collapseSidePanel\": \"Lukk sidemenyen\",\n \"collection\": \"Samling\",\n \"continue\": \"Fortsett\",\n \"copy\": \"Kopiere\",\n \"currentItem\": \"Valgt objekt\",\n \"currentItem_1/1\": \"Valgt objekt\",\n \"currentItem_1/2\": \"Venstre\",\n \"currentItem_2/2\": \"Høyre\",\n \"dark\": \"Mørkt tema\",\n \"digitizedView\": \"Digitalisert visning\",\n \"dismiss\": \"Lukk\",\n \"displayNoAnnotations\": \"Avmarkér alle\",\n \"downloadExport\": \"Eksportér arbeidsområde\",\n \"downloadExportWorkspace\": \"Eksportér arbeidsområde\",\n \"elastic\": \"Elastisk\",\n \"elasticDescription\": \"Flytt og endre størrelsen på vinduet fritt i et ubegrenset arbeidsområde. Vindu kan overlappe.\",\n \"emptyResourceList\": \"Din resursliste er tom\",\n \"error\": \"Error\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Et problem oppstod\",\n \"exitFullScreen\": \"Forlat fullskjermsvisning\",\n \"expandSection\": \"Ekspandér seksjonen \\\"{{section}}\\\"\",\n \"expandSidePanel\": \"Ekspandér sidemenyen\",\n \"exportCopied\": \"Konfiguration av arbeidsområdet ble kopiert til din utklippstavle\",\n \"fetchManifest\": \"Legg til\",\n \"fullScreen\": \"Fullskjermsvisning\",\n \"gallery\": \"Galleri\",\n \"hideZoomControls\": \"Skjul zoomkontroll\",\n \"highlightAllAnnotations\": \"Markér alle\",\n \"iiif_homepage\": \"Om denne ressursen\",\n \"iiif_manifest\": \"IIIF manifest\",\n \"iiif_renderings\": \"Alternativt format\",\n \"iiif_seeAlso\": \"Se også\",\n \"import\": \"Importér\",\n \"importWorkspace\": \"Importér arbeidsområde\",\n \"importWorkspaceHint\": \"Lim inn en Mirador 4 konfigurasjon for import\",\n \"item\": \"Objekt: {{label}}\",\n \"itemList\": \"Objektliste\",\n \"jsError\": \"Tekniske detaljer\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Språk\",\n \"layer_hide\": \"Skjul lag\",\n \"layer_move\": \"Flytt lag\",\n \"layer_opacity\": \"Lag-gjennomsiktighet\",\n \"layer_show\": \"Vis lag\",\n \"layers\": \"Lag\",\n \"light\": \"Lyst tema\",\n \"links\": \"Lenker\",\n \"listAllOpenWindows\": \"Gå til vindu\",\n \"login\": \"Logg inn\",\n \"logout\": \"Logg ut\",\n \"manifestError\": \"Ressursen kan ikke legges til:\",\n \"maximizeWindow\": \"Maksimér vinduet\",\n \"minimizeWindow\": \"Minimér vinduet\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Miradorressurser\",\n \"miradorViewer\": \"Mirador bildeviser\",\n \"more\": \"mer...\",\n \"moreResults\": \"Flere resultat\",\n \"mosaic\": \"Mosaik\",\n \"mosaicDescription\": \"Flytt og endre størrelse på vinduet i relasjon til hverandre, innenfor den synlige rammen.\",\n \"moveCompanionWindowToBottom\": \"Flytt til bunnen\",\n \"moveCompanionWindowToRight\": \"Flytt til høyre\",\n \"nextCanvas\": \"Neste objekt\",\n \"noItemSelected\": \"Ingen valgte objekt\",\n \"numItems_one\": \"{{number}} objekt\",\n \"numItems_other\": \"{{number}} objekter\",\n \"off\": \"Av\",\n \"openCompanionWindow_annotations\": \"Annoteringer\",\n \"openCompanionWindow_attribution\": \"Rettigheter\",\n \"openCompanionWindow_canvas\": \"Indeks\",\n \"openCompanionWindow_info\": \"Informasjon\",\n \"openCompanionWindow_layers\": \"Lag\",\n \"openCompanionWindow_search\": \"Søk\",\n \"openInCompanionWindow\": \"Åpne i eget panel\",\n \"openWindows\": \"Åpne vindu\",\n \"pagination\": \"{{current}} av {{total}}\",\n \"position\": \"Posisjon\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Forrige objekt\",\n \"related\": \"Relatert\",\n \"resource\": \"Ressurs\",\n \"retry\": \"Forsøk igjen\",\n \"right\": \"Til høyre\",\n \"rights\": \"Lisens\",\n \"scroll\": \"Bla\",\n \"searchInputLabel\": \"Søkeord\",\n \"searchNextResult\": \"Neste resultat\",\n \"searchNoResults\": \"Ingen treff\",\n \"searchPreviousResult\": \"Forrige resultat\",\n \"searchResultsRemaining\": \"{{numLeft}} igjen\",\n \"searchSubmitAria\": \"Søk\",\n \"searchTitle\": \"Søk\",\n \"selectWorkspaceMenu\": \"Velg arbeidsområde-type\",\n \"showCollection\": \"Vis samling\",\n \"showingNumAnnotations_one\": \"Vis {{number}} annotasjon\",\n \"showingNumAnnotations_other\": \"Vis {{number}} annotasjoner\",\n \"showZoomControls\": \"Vis zoomkontroll\",\n \"sidebarPanelsNavigation\": \"Sidemeny-panel navigering\",\n \"single\": \"En og en\",\n \"startHere\": \"Start her\",\n \"suggestSearch\": \"Søk etter \\\"{{ query }}\\\" i dette dokument\",\n \"tableOfContentsList\": \"Innholdsfortegnelse\",\n \"theme\": \"Tema\",\n \"thumbnailList\": \"Miniatyrliste\",\n \"thumbnailNavigation\": \"Miniatyrer\",\n \"thumbnails\": \"Miniatyrer\",\n \"toggleWindowSideBar\": \"Vis/skjul sidemenyen\",\n \"totalCollections_one\": \"{{count}} samling\",\n \"totalCollections_other\": \"{{count}} samlinger\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"totalManifests_other\": \"{{count}} manifester\",\n \"tryAgain\": \"Forsøk igjen\",\n \"untitled\": \"[uten tittel]\",\n \"view\": \"Visning\",\n \"viewWorkspaceConfiguration\": \"Vis konfigurasjon av arbeidsområde.\",\n \"welcome\": \"Velkommen til Mirador\",\n \"window\": \"Vindu: {{label}}\",\n \"windowMenu\": \"Vindusvisning & miniatyrvisning\",\n \"windowNavigation\": \"Vindusnavigasjon\",\n \"windowPluginButtons\": \"Innstillinger\",\n \"windowPluginMenu\": \"Vindusinnstillinger\",\n \"workspace\": \"Arbeidsområde\",\n \"workspaceFullScreen\": \"Fullskjermsvisning\",\n \"workspaceMenu\": \"Innstillinger for arbeidsområdet\",\n \"workspaceNavigation\": \"Navigasjon i arbeidsområdet\",\n \"workspaceOptions\": \"Flere valg for arbeidsområdet\",\n \"workspaceSelectionTitle\": \"Velg arbeidsområde-type\",\n \"zoomIn\": \"Zoom inn\",\n \"zoomOut\": \"Zoom ut\",\n \"zoomReset\": \"Tilbakestill zoom\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"A Mirador Project weboldala\",\n \"aboutThisItem\": \"Elem adatai\",\n \"addedFromUrl\": \"(URL-ként hozzáadva)\",\n \"addManifestUrl\": \"Manifest URL\",\n \"addManifestUrlHelp\": \"Az IIIF-dokumentum hivatkozása\",\n \"addResource\": \"Hozzáadás\",\n \"annotationCanvasLabel_1/1\": \"Elem: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"Balra: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"Jobbra: [{{label}}]\",\n \"annotations\": \"Megjegyzések\",\n \"attribution\": \"Tulajdon\",\n \"attributionTitle\": \"Szerzői jogok\",\n \"authenticationFailed\": \"Sikertelen bejelentkezés\",\n \"authenticationRequired\": \"A teljes eléréshez bejelentkezés szükséges\",\n \"backToResults\": \"Vissza a találatokhoz\",\n \"book\": \"Könyv\",\n \"bottom\": \"Lent\",\n \"cancel\": \"Mégsem\",\n \"canvasIndex\": \"Index\",\n \"changeTheme\": \"Téma módosítása\",\n \"clearSearch\": \"törlés\",\n \"close\": \"Bezárás\",\n \"closeAddResourceForm\": \"Bezárás\",\n \"closeAddResourceMenu\": \"Lista bezárása\",\n \"closeCompanionWindow\": \"Panel bezárása\",\n \"closeWindow\": \"Ablak bezárása\",\n \"collapseSection\": \"\\\"{{section}}\\\" rész bezárása\",\n \"collapseSidePanel\": \"Oldalsáv elrejtése\",\n \"collection\": \"Gyűjtemény\",\n \"continue\": \"Folytatás\",\n \"copy\": \"Másolás\",\n \"currentItem\": \"Aktuális elem\",\n \"currentItem_1/1\": \"Aktuális elem\",\n \"currentItem_1/2\": \"Balra\",\n \"currentItem_2/2\": \"Jobbra\",\n \"dark\": \"Sötét téma\",\n \"digitizedView\": \"Digitalizált nézet\",\n \"dismiss\": \"Bezár\",\n \"displayNoAnnotations\": \"Annotációk elrejtése\",\n \"downloadExport\": \"Munkaterület exportálása\",\n \"downloadExportWorkspace\": \"Munkaterület exportálása\",\n \"elastic\": \"Elastic\",\n \"elasticDescription\": \"Szabadon mozgathatja az ablakokat, akár fedhetik is egymást.\",\n \"emptyResourceList\": \"A forráslista üres\",\n \"error\": \"Hiba\",\n \"errorDialogConfirm\": \"OK\",\n \"errorDialogTitle\": \"Hiba történt\",\n \"exitFullScreen\": \"Teljes képernyő bezárása\",\n \"expandSection\": \"\\\"{{section}}\\\" rész kinyitása\",\n \"expandSidePanel\": \"Oldalsáv kinyitása\",\n \"exportCopied\": \"Munkaterület beállításai vágólapra másolva\",\n \"fetchManifest\": \"Hozzáadás\",\n \"fullScreen\": \"Teljes képernyő\",\n \"gallery\": \"Galéria\",\n \"hideZoomControls\": \"Zoom eszközök elrejtése\",\n \"highlightAllAnnotations\": \"Annotációk megjelenítése\",\n \"iiif_homepage\": \"Dokumentum adatai\",\n \"iiif_manifest\": \"IIIF manifest\",\n \"iiif_related\": \"Kapcsolódó\",\n \"iiif_renderings\": \"Más formátumok\",\n \"iiif_seeAlso\": \"Lásd még\",\n \"import\": \"Importálás\",\n \"importWorkspace\": \"Munkaterület importálása\",\n \"importWorkspaceHint\": \"Illesszen be egy Mirador 4 konfigurációt\",\n \"item\": \"Elem: {{label}}\",\n \"itemList\": \"Tartalomjegyzék\",\n \"jsError\": \"Technikai adatok\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"Nyelv\",\n \"layer_hide\": \"Réteg elrejtése\",\n \"layer_move\": \"Réteg mozgatása\",\n \"layer_moveToBackground\": \"Réteg mozgatása hátra\",\n \"layer_moveToFront\": \"Réteg mozgatása előre\",\n \"layer_opacity\": \"Réteg átlátszósága\",\n \"layer_show\": \"Réteg megjelenítése\",\n \"layers\": \"Rétegek\",\n \"light\": \"Világos téma\",\n \"links\": \"Linkek\",\n \"listAllOpenWindows\": \"Ablakok\",\n \"login\": \"Bejelentkezés\",\n \"logout\": \"Kijelentkezés\",\n \"manifestError\": \"Nem sikerült a hozzáadás:\",\n \"maximizeWindow\": \"Teljes méretű ablak\",\n \"minimizeWindow\": \"Előző méret\",\n \"mirador\": \"Mirador\",\n \"miradorResources\": \"Mirador dokumentumok\",\n \"miradorViewer\": \"Mirador viewer\",\n \"more\": \"több...\",\n \"moreResults\": \"További találatok\",\n \"mosaic\": \"Mozaik\",\n \"mosaicDescription\": \"Ablakok mozgatása és átméretezése megadott területen.\",\n \"moveCompanionWindowToBottom\": \"Mozgatás lefelé\",\n \"moveCompanionWindowToRight\": \"Mozgatás jobbra\",\n \"multipartCollection\": \"Összetett gyűjtemény\",\n \"nextCanvas\": \"Következő\",\n \"noItemSelected\": \"Nincs kiválasztott elem\",\n \"numItems_one\": \"{{number}} elem\",\n \"numItems_other\": \"{{number}} elem\",\n \"off\": \"Nincs\",\n \"openCompanionWindow_annotations\": \"Megjegyzések\",\n \"openCompanionWindow_attribution\": \"Szerzői jogok\",\n \"openCompanionWindow_canvas\": \"Tartalomjegyzék\",\n \"openCompanionWindow_info\": \"Információ\",\n \"openCompanionWindow_layers\": \"Rétegek\",\n \"openCompanionWindow_search\": \"Keresés\",\n \"openInCompanionWindow\": \"Megnyitás új panelen\",\n \"openWindows\": \"Megnyitott ablakok\",\n \"pagination\": \"{{current}} / {{total}}\",\n \"position\": \"Pozíció\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"Előző\",\n \"related\": \"Kapcsolódó\",\n \"resource\": \"Adatok\",\n \"retry\": \"Űjra\",\n \"right\": \"Jobbra\",\n \"rights\": \"Licensz\",\n \"scroll\": \"Görgetés\",\n \"searchInputLabel\": \"kereső szavak\",\n \"searchNextResult\": \"Következő találat\",\n \"searchNoResults\": \"Nincs találat\",\n \"searchPreviousResult\": \"Előző találat\",\n \"searchResultsRemaining\": \"{{numLeft}} van hátra\",\n \"searchSubmitAria\": \"Keresés\",\n \"searchTitle\": \"Keresés\",\n \"selectWorkspaceMenu\": \"Munkaterület típusának kiválasztása\",\n \"showCollection\": \"Gyűjtemény megjelenítése\",\n \"showingNumAnnotations_one\": \"{{number}} megjegyzés megjelenítve\",\n \"showingNumAnnotations_other\": \"{{number}} megjegyzés megjelenítve\",\n \"showZoomControls\": \"Zoom eszközök megjelenítése\",\n \"sidebarPanelsNavigation\": \"Oldalsáv navigáció\",\n \"single\": \"Egyoldalas\",\n \"startHere\": \"Hozzáadás\",\n \"suggestSearch\": \"Keresés: \\\"{{ query }}\\\"\",\n \"tableOfContentsList\": \"Tartalomjegyzék\",\n \"theme\": \"Téma\",\n \"thumbnailList\": \"Előnézeti képek listája\",\n \"thumbnailNavigation\": \"Előnézeti képek\",\n \"thumbnails\": \"Előnézeti képek\",\n \"toggleWindowSideBar\": \"Oldalsáv ki/bekapcsolása\",\n \"totalCollections_one\": \"{{count}} gyűjtemény\",\n \"totalCollections_other\": \"{{count}} gyűjtemény\",\n \"totalManifests_one\": \"{{count}} manifest\",\n \"totalManifests_other\": \"{{count}} manifest\",\n \"tryAgain\": \"Próbálja újra\",\n \"untitled\": \"[Névtelen]\",\n \"view\": \"Megtekintés\",\n \"viewWorkspaceConfiguration\": \"Munkaterület beállítások\",\n \"welcome\": \"Üdvözli a Mirador\",\n \"window\": \"Ablak: {{label}}\",\n \"windowMenu\": \"Megjelenítési mód & előnézet\",\n \"windowNavigation\": \"Ablakok kezelése\",\n \"windowPluginButtons\": \"Beállítások\",\n \"windowPluginMenu\": \"További lehetőségek\",\n \"workspace\": \"Munkaterület\",\n \"workspaceFullScreen\": \"Teljes képernyő\",\n \"workspaceMenu\": \"Munkaterület beállítások\",\n \"workspaceNavigation\": \"Workspace navigation\",\n \"workspaceOptions\": \"Munkaterület lehetőségek\",\n \"workspaceSelectionTitle\": \"Munkaterület típusa\",\n \"zoomIn\": \"Nagyítás\",\n \"zoomOut\": \"Kicsinyítés\",\n \"zoomReset\": \"Képméret ablakhoz igazítása\"\n }\n}\n","{\n \"translation\": {\n \"aboutMirador\": \"மிரடோர் திட்டம் பற்றி\",\n \"aboutThisItem\": \"இந்த உருப்படியைப் பற்றி\",\n \"addedFromUrl\": \"(உரலியிலிருந்து சேர்க்கப்பட்டது)\",\n \"addManifestUrl\": \"வள இருப்பிடம்\",\n \"addManifestUrlHelp\": \"ஒரு IIIF வளத்தின் உரலி\",\n \"addResource\": \"வளத்தைச் சேர்க்கவும்\",\n \"annotationCanvasLabel_1/1\": \"உருப்படி: [{{label}}]\",\n \"annotationCanvasLabel_1/2\": \"இடது: [{{label}}]\",\n \"annotationCanvasLabel_2/2\": \"வலது: [{{label}}]\",\n \"annotations\": \"குறிப்புரைகள்\",\n \"attribution\": \"பண்புக்கூறு\",\n \"attributionTitle\": \"உரிமைகள்\",\n \"authenticationFailed\": \"அடையாளச் சரிபார்ப்பு தோல்வியடைந்தது\",\n \"authenticationRequired\": \"முழு அணுகலுக்கு அடையாளச் சரிபார்ப்பு அவசியம்\",\n \"backToResults\": \"முடிவுகளுக்குத் திரும்பு\",\n \"book\": \"நூல்\",\n \"bottom\": \"கீழ்\",\n \"cancel\": \"நீக்குக\",\n \"canvasIndex\": \"சுட்டெண்\",\n \"changeTheme\": \"கருப்பொருளை மாற்றவும்\",\n \"clearSearch\": \"நீக்குக\",\n \"close\": \"மூடுக\",\n \"closeAddResourceForm\": \"படிவத்தை மூடுக\",\n \"closeAddResourceMenu\": \"வளங்கள் பட்டியலை மூடுக\",\n \"closeCompanionWindow\": \"பலகத்தை மூடுக\",\n \"closeWindow\": \"சாளரத்தை மூடுக\",\n \"collapseSection\": \"\\\"{{section}}\\\" பகுதியைச் சுருக்குக\",\n \"collapseSidePanel\": \"பக்கப்பட்டையைச் சுருக்குக\",\n \"collection\": \"சேகரம்\",\n \"continue\": \"தொடரவும்\",\n \"copy\": \"நகல்\",\n \"currentItem\": \"தற்போதைய உருப்படி\",\n \"currentItem_1/1\": \"தற்போதைய உருப்படி\",\n \"currentItem_1/2\": \"இடது\",\n \"currentItem_2/2\": \"வலது\",\n \"dark\": \"அடர் கருப்பொருள்\",\n \"digitizedView\": \"எண்ணிம காட்சி\",\n \"dismiss\": \"நிராகரிக்குக\",\n \"displayNoAnnotations\": \"முன்னிறுத்தல் இல்லை\",\n \"downloadExport\": \"பணித்தளத்தை தரவிறக்கவும்\",\n \"downloadExportWorkspace\": \"பணித்தளத்தை தரவிறக்கவும்\",\n \"elastic\": \"மீள்ம\",\n \"elasticDescription\": \"வரம்பற்ற பணித்தளத்தில் சாளரங்களை சுதந்திரமாக நகர்த்த முடியும், அளவையும் மாற்றலாம். சாளரங்கள் ஒன்றின் மேல் ஒன்று வரலாம்.\",\n \"emptyResourceList\": \"உங்கள் வளப் பட்டியல் காலியாக உள்ளது\",\n \"error\": \"தவறு\",\n \"errorDialogConfirm\": \"சரி\",\n \"errorDialogTitle\": \"ஒரு தவறு ஏற்பட்டுள்ளது\",\n \"exitFullScreen\": \"முழுத்திரையிலிருந்து வெளியேறவும்\",\n \"expandSection\": \"\\\"{{section}}\\\" பகுதியை விரிவாக்குக\",\n \"expandSidePanel\": \"பக்கப்பட்டையை விரிவாக்குக\",\n \"exportCopied\": \"பணித்தள அமைப்பு உங்கள் நகல்நினைவியில் நகலெடுக்கப்பட்டது.\",\n \"fetchManifest\": \"சேர்க்க\",\n \"fullScreen\": \"முழுத்திரை\",\n \"gallery\": \"படத்தொகுப்பு\",\n \"hideZoomControls\": \"பெரிதாக்குதல் கட்டுப்பாடுகளை மறைக்கவும்\",\n \"highlightAllAnnotations\": \"முன்னிறுத்தல்: அனைத்தும்\",\n \"iiif_homepage\": \"இந்த வளம் பற்றி\",\n \"iiif_manifest\": \"IIIF விபரக் கோப்பு\",\n \"iiif_related\": \"தொடர்புடையவை\",\n \"iiif_renderings\": \"மாற்று வடிவங்கள்\",\n \"iiif_seeAlso\": \"மேலும் காண்க\",\n \"imageFailedToLoad\": \"படத்தை பதிவேற்றுவதில் சிக்கல். விவரங்களுக்கு முனையத்தைப் பார்க்கவும்\",\n \"import\": \"தரவிறக்கம்\",\n \"importWorkspace\": \"பணித்தள தரவிறக்கம்\",\n \"importWorkspaceHint\": \"தரவிறக்கவேண்டிய மிரடோர் 4 பணித்தள அமைப்பை இங்கே ஒட்டவும்\",\n \"item\": \"உருப்படி: {{label}}\",\n \"itemList\": \"உருப்படி பட்டியல்\",\n \"jsError\": \"தொழில்நுட்ப விவரங்கள்\",\n \"jsStack\": \"{{ stack }}\",\n \"language\": \"மொழி\",\n \"layer_hide\": \"அடுக்கை மறைக்கவும்\",\n \"layer_move\": \"அடுக்கை நகர்த்தவும்\",\n \"layer_moveToBackground\": \"அடுக்கை பின்னணிக்கு நகர்த்தவும்\",\n \"layer_moveToFront\": \"அடுக்கை முன்னணிக்கு நகர்த்தவும்\",\n \"layer_opacity\": \"அடுக்கின் தெளிவின்மை\",\n \"layer_show\": \"அடுக்கை காட்டவும்\",\n \"layers\": \"அடுக்குகள்\",\n \"light\": \"மென் கருப்பொருள்\",\n \"links\": \"இணைப்புகள்\",\n \"listAllOpenWindows\": \"சாளரத்திற்குச் செல்லவும்\",\n \"login\": \"புகுபதிகை\",\n \"logout\": \"விடுபதிகை\",\n \"manifestError\": \"வளத்தைச் சேர்க்க முடியாது:\",\n \"maximizeWindow\": \"சாளரத்தை பெரிதாக்கவும்\",\n \"minimizeWindow\": \"சாளரத்தைச் சிறிதாக்கவும்\",\n \"mirador\": \"மிரடோர்\",\n \"miradorResources\": \"மிரடோர் வளங்கள்\",\n \"miradorViewer\": \"மிரடோர் பார்வையாளர்\",\n \"more\": \"மேலும்...\",\n \"moreResults\": \"மேலும் முடிவுகள்\",\n \"mosaic\": \"மொசைக்\",\n \"mosaicDescription\": \"காணப்படும் சாளர எல்லைக்குள், சாளரங்களை ஒன்றையொன்று சார்ந்து நகர்த்தியும் அளவை மாற்றியும் கொள்ளலாம்.\",\n \"moveCompanionWindowToBottom\": \"கீழே நகர்த்தவும்\",\n \"moveCompanionWindowToRight\": \"வலதுபுறம் நகர்த்தவும்\",\n \"multipartCollection\": \"பல்பகுதி சேகரம்\",\n \"nextCanvas\": \"அடுத்த உருப்படி\",\n \"noItemSelected\": \"எந்த உருப்படியும் தேர்ந்தெடுக்கப்படவில்லை\",\n \"numItems_one\": \"{{number}} உருப்படி\",\n \"numItems_other\": \"{{number}} உருப்படிகள்\",\n \"off\": \"முடக்குக\",\n \"openCompanionWindow_annotations\": \"குறிப்புரைகள்\",\n \"openCompanionWindow_attribution\": \"உரிமைகள்\",\n \"openCompanionWindow_canvas\": \"சுட்டெண்\",\n \"openCompanionWindow_info\": \"தகவல்\",\n \"openCompanionWindow_layers\": \"அடுக்குகள்\",\n \"openCompanionWindow_search\": \"தேடல்\",\n \"openInCompanionWindow\": \"தனி பலகத்தில் திறக்கவும்\",\n \"openWindows\": \"தற்போது திறந்திருக்கும் சாளரங்கள்\",\n \"pagination\": \"{{current}} இல் {{total}}\",\n \"position\": \"நிலை\",\n \"previewWindowTitle\": \"{{title}}\",\n \"previousCanvas\": \"முந்தைய உருப்படி\",\n \"related\": \"தொடர்புடைய\",\n \"resource\": \"வளம்\",\n \"retry\": \"மீண்டும் முயற்சிக்கவும்\",\n \"right\": \"சரி\",\n \"rights\": \"உரிமம்\",\n \"scroll\": \"உருட்டவும்\",\n \"searchInputLabel\": \"தேடல் சொற்கள்\",\n \"searchNextResult\": \"அடுத்த முடிவு\",\n \"searchNoResults\": \"முடிவுகள் எதுவும் காணப்படவில்லை\",\n \"searchPreviousResult\": \"முந்தைய முடிவு\",\n \"searchResultsRemaining\": \"{{numLeft}} மீதமுள்ளன\",\n \"searchSubmitAria\": \"தேடலைச் சமர்ப்பிக்கவும்\",\n \"searchTitle\": \"தேடல்\",\n \"selectWorkspaceMenu\": \"பணித்தள வகையைத் தேர்ந்தெடுக்கவும்\",\n \"showCollection\": \"சேகரத்தை காட்டவும்\",\n \"showingNumAnnotations_one\": \"{{number}} குறிப்புரை காட்டப்படுகிறது\",\n \"showingNumAnnotations_other\": \"{{number}} குறிப்புரைகள் காட்டப்படுகின்றன\",\n \"showZoomControls\": \"பெரிதாக்குதல் கட்டுப்பாடுகளைக் காட்டு\",\n \"sidebarPanelsNavigation\": \"பக்கப்பட்டை பலகங்களை வழிசெலுத்தல்\",\n \"single\": \"தனி\",\n \"startHere\": \"இங்கிருந்து தொடங்குங்கள்\",\n \"suggestSearch\": \"இந்த ஆவணத்தில் \\\"{{ query }}\\\" என்பதைத் தேடவும்\",\n \"tableOfContentsList\": \"பொருளடக்கம்\",\n \"theme\": \"கருப்பொருள்\",\n \"thumbnailList\": \"சிறுபடப் பட்டியல்\",\n \"thumbnailNavigation\": \"சிறுபடங்கள்\",\n \"thumbnails\": \"சிறுபடங்கள்\",\n \"toggleWindowSideBar\": \"பக்கப்பட்டையை மாற்றவும்\",\n \"totalCollections_one\": \"{{count}} சேகரம்\",\n \"totalCollections_other\": \"{{count}} சேகரங்கள்\",\n \"totalManifests_one\": \"{{count}} விபரக் கோப்பு\",\n \"totalManifests_other\": \"{{count}} விபரக் கோப்புக்கள்\",\n \"tryAgain\": \"மீண்டும் முயற்சிக்கவும்\",\n \"untitled\": \"[Untitled]\",\n \"view\": \"பார்வை\",\n \"viewWorkspaceConfiguration\": \"பணித்தள உள்ளமைவைக் காண்க\",\n \"welcome\": \"மிரடோருக்கு வரவேற்கிறோம்\",\n \"window\": \"சாளரம்: {{label}}\",\n \"windowMenu\": \"சாளரக் காட்சிகள் மற்றும் சிறுபடக் காட்சி\",\n \"windowNavigation\": \"சாளர வழிசெலுத்தல்\",\n \"windowPluginButtons\": \"தேர்வுகள்\",\n \"windowPluginMenu\": \"சாளர தேர்வுகள்\",\n \"workspace\": \"பணித்தளம்\",\n \"workspaceFullScreen\": \"முழுத்திரை\",\n \"workspaceMenu\": \"பணித்தள அமைப்புகள்\",\n \"workspaceNavigation\": \"பணித்தள வழிசெலுத்தல்\",\n \"workspaceOptions\": \"பணித்தள தேர்வுகள்\",\n \"workspaceSelectionTitle\": \"பணித்தள வகையைத் தேர்ந்தெடுக்கவும்\",\n \"zoomIn\": \"பெரிதாக்குக\",\n \"zoomOut\": \"சிறிதாக்குக\",\n \"zoomReset\": \"பெரிதாக்கத்தை மீளமைக்க\"\n }\n}\n","import { createInstance } from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport ar from './locales/ar/translation.json';\nimport de from './locales/de/translation.json';\nimport en from './locales/en/translation.json';\nimport et from './locales/et/translation.json';\nimport fa from './locales/fa/translation.json';\nimport zhCn from './locales/zhCn/translation.json';\nimport zhTw from './locales/zhTw/translation.json';\nimport fr from './locales/fr/translation.json';\nimport hr from './locales/hr/translation.json';\nimport ja from './locales/ja/translation.json';\nimport kr from './locales/kr/translation.json';\nimport nl from './locales/nl/translation.json';\nimport pl from './locales/pl/translation.json';\nimport ptBr from './locales/ptBr/translation.json';\nimport it from './locales/it/translation.json';\nimport sr from './locales/sr/translation.json';\nimport sv from './locales/sv/translation.json';\nimport lt from './locales/lt/translation.json';\nimport vi from './locales/vi/translation.json';\nimport bg from './locales/bg/translation.json';\nimport nbNo from './locales/nbNo/translation.json';\nimport hu from './locales/hu/translation.json';\nimport ta from './locales/ta/translation.json';\n\n/**\n * Load translations for each language\n */\nfunction createI18nInstance(i18nConfig = {}) {\n const resources = {\n ar,\n bg,\n de,\n en,\n et,\n fa,\n fr,\n hr,\n hu,\n it,\n ja,\n kr,\n lt,\n 'nb-NO': nbNo,\n nl,\n pl,\n 'pt-BR': ptBr,\n sr,\n sv,\n vi,\n 'zh-CN': zhCn,\n 'zh-TW': zhTw,\n ta,\n };\n\n const instance = createInstance();\n instance.use(initReactI18next).init({\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false, // react is already safe from xss\n },\n lng: 'en',\n resources,\n ...i18nConfig,\n });\n\n return instance;\n}\n\nexport default createI18nInstance;\n","import { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport FailedImageContext from './FailedImageContext';\nimport config from '../config/settings';\n\n// SVG fallback with Material-UI Warning icon\n// Uses default primary blue (#1967d2) - override entire image via config.fallbackImage if needed\nconst defaultFallback =\n 'data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"400\" height=\"600\"%3E%3Crect width=\"400\" height=\"600\" fill=\"%23f5f5f5\"/%3E%3Cpath d=\"M 200 240 L 254 354 L 146 354 Z M 200 228 L 128 372 L 272 372 Z M 204.5 336 L 195.5 336 L 195.5 345 L 204.5 345 Z M 204.5 309 L 195.5 309 L 195.5 327 L 204.5 327 Z\" fill=\"%231967d2\"/%3E%3C/svg%3E';\n\nexport default function FailedImageProvider({ children }) {\n const fallbackImage = config.fallbackImage || defaultFallback;\n const [failedImages, setFailedImages] = useState(new Set());\n\n const notifyFailure = useCallback((imageId) => {\n setFailedImages((prev) => new Set(prev).add(imageId));\n }, []);\n\n return (\n <FailedImageContext.Provider\n value={{\n failedImages,\n fallbackImage,\n notifyFailure,\n }}\n >\n {children}\n </FailedImageContext.Provider>\n );\n}\n\nFailedImageProvider.propTypes = {\n children: PropTypes.node.isRequired,\n};\n","import { useCallback, useState, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Used to request or exit fullscreen using the native Fullscreen API.\n */\nexport function useFullScreenHandle() {\n const [active, setActive] = useState(false);\n\n /** */\n const handleFullScreenChange = () => {\n setActive(document.fullscreenElement === document.body);\n };\n\n useEffect(() => {\n document.addEventListener('fullscreenchange', handleFullScreenChange);\n return () => document.removeEventListener('fullscreenchange', handleFullScreenChange);\n }, []);\n\n /** */\n const requestFullscreen = () => document.body.requestFullscreen();\n\n const enter = useCallback(() => {\n if (document.fullscreenElement) {\n return document.exitFullscreen().then(() => requestFullscreen());\n }\n return requestFullscreen();\n }, []);\n\n const exit = useCallback(() => {\n if (document.fullscreenElement !== document.body) return Promise.resolve();\n return document.exitFullscreen();\n }, []);\n\n return useMemo(\n () => ({\n active,\n enter,\n exit,\n }),\n [active, enter, exit],\n );\n}\n\n/**\n * Used to set its children to fullscreen.\n */\nexport const FullScreen = ({ handle, onChange = undefined, children = null, className = '' }) => {\n const fullScreenClasses = ['fullscreen', className, handle.active ? 'fullscreen-enabled' : ''].filter(Boolean);\n\n useEffect(() => {\n if (onChange) {\n onChange(handle.active, handle);\n }\n }, [handle, handle.active, onChange]);\n\n const styles = handle.active\n ? {\n height: '100%',\n width: '100%',\n }\n : {};\n\n return (\n <div className={fullScreenClasses.join(' ')} style={styles}>\n {children}\n </div>\n );\n};\n\nFullScreen.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n handle: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n};\n","import { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { I18nextProvider } from 'react-i18next';\nimport { ThemeProvider, StyledEngineProvider, createTheme } from '@mui/material/styles';\nimport { DndContext, DndProvider } from 'react-dnd';\nimport { MultiBackend } from 'react-dnd-multi-backend';\nimport { HTML5toTouch } from 'rdndmb-html5-to-touch';\nimport rtlPlugin from 'stylis-plugin-rtl';\nimport { prefixer } from 'stylis';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport createI18nInstance from '../i18n';\nimport FailedImageProvider from '../contexts/FailedImageProvider';\nimport { FullScreen, useFullScreenHandle } from '../lib/FullScreenHandle';\nimport FullScreenContext from '../contexts/FullScreenContext';\nimport LocaleContext from '../contexts/LocaleContext';\n\n/**\n * Allow applications to opt-out of (or provide their own) drag and drop context\n */\nconst MaybeDndProvider = ({ dndManager = undefined, children }) => {\n if (dndManager === false) {\n return children;\n }\n\n if (dndManager === undefined) {\n return (\n <DndProvider backend={MultiBackend} options={HTML5toTouch}>\n {children}\n </DndProvider>\n );\n }\n\n return <DndContext.Provider value={dndManager}>{children}</DndContext.Provider>;\n};\n\nMaybeDndProvider.propTypes = {\n children: PropTypes.node.isRequired,\n dndManager: PropTypes.oneOf([undefined, false, PropTypes.object]),\n};\n\n/**\n * Shim to inject the full screen handle into a context\n */\nconst FullScreenShim = ({ children }) => {\n const handle = useFullScreenHandle();\n\n return (\n <FullScreen handle={handle}>\n <FullScreenContext.Provider value={handle}>{children}</FullScreenContext.Provider>\n </FullScreen>\n );\n};\n\nFullScreenShim.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\n/**\n * Hook up the I18next provider to the configuration in redux to allow\n * plugins + config to inject additional translations.\n */\nconst StoreAwareI18nextProvider = ({ children, language, translations }) => {\n const [i18n] = useState(createI18nInstance({ lng: language }));\n useEffect(() => {\n if (i18n && i18n.language !== language) i18n.changeLanguage(language);\n }, [i18n, language]);\n\n useEffect(() => {\n Object.keys(translations).forEach((lng) => {\n i18n.addResourceBundle(lng, 'translation', translations[lng], true, true);\n });\n }, [i18n, translations]);\n\n return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;\n};\n\nStoreAwareI18nextProvider.propTypes = {\n children: PropTypes.node.isRequired,\n language: PropTypes.string.isRequired,\n translations: PropTypes.object.isRequired,\n};\n\n/**\n * Create rtl emotion cache\n */\nconst cacheRtl = createCache({\n key: 'muirtl',\n stylisPlugins: [prefixer, rtlPlugin],\n});\n\n/**\n * Create default emotion cache\n */\nconst cacheDefault = createCache({\n key: 'mui',\n});\n\n/**\n * This component adds viewer-specific providers.\n * @prop {Object} manifests\n */\nexport function AppProviders({ children = null, language, theme, translations, dndManager = undefined }) {\n return (\n <FullScreenShim>\n <StoreAwareI18nextProvider language={language} translations={translations}>\n <LocaleContext.Provider value={language}>\n <StyledEngineProvider injectFirst>\n <CacheProvider value={theme.direction === 'rtl' ? cacheRtl : cacheDefault}>\n <ThemeProvider theme={createTheme(theme)}>\n <MaybeDndProvider dndManager={dndManager}>\n <FailedImageProvider>{children}</FailedImageProvider>\n </MaybeDndProvider>\n </ThemeProvider>\n </CacheProvider>\n </StyledEngineProvider>\n </LocaleContext.Provider>\n </StoreAwareI18nextProvider>\n </FullScreenShim>\n );\n}\n\nAppProviders.propTypes = {\n children: PropTypes.node,\n dndManager: PropTypes.object,\n language: PropTypes.string.isRequired,\n theme: PropTypes.object.isRequired,\n translations: PropTypes.object.isRequired,\n};\n","import { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { withPlugins } from '../extend/withPlugins';\nimport { getConfig, getTheme } from '../state/selectors';\nimport { AppProviders } from '../components/AppProviders';\n\n/**\n * mapStateToProps - to hook up connect\n * @memberof App\n * @private\n */\nconst mapStateToProps = (state) => ({\n language: getConfig(state).language,\n theme: getTheme(state),\n translations: getConfig(state).translations,\n});\n\nconst enhance = compose(connect(mapStateToProps), withPlugins('AppProviders'));\n\nexport default enhance(AppProviders);\n","import { createRef, lazy, Suspense } from 'react';\nimport PropTypes from 'prop-types';\nimport PluginProvider from '../extend/PluginProvider';\nimport AppProviders from '../containers/AppProviders';\nimport WorkspaceContext from '../contexts/WorkspaceContext';\n\nconst WorkspaceArea = lazy(() => import('../containers/WorkspaceArea'));\n\n/**\n * This is the top level Mirador component.\n * @prop {Object} manifests\n */\nexport function App({ dndManager = undefined, plugins = [] }) {\n const areaRef = createRef();\n\n return (\n <PluginProvider plugins={plugins}>\n <AppProviders dndManager={dndManager}>\n <WorkspaceContext.Provider value={areaRef}>\n <Suspense fallback={<div />}>\n <WorkspaceArea areaRef={areaRef} />\n </Suspense>\n </WorkspaceContext.Provider>\n </AppProviders>\n </PluginProvider>\n );\n}\n\nApp.propTypes = {\n dndManager: PropTypes.object,\n plugins: PropTypes.array,\n};\n\nexport default App;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nmodule.exports = isNull;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","import isString from 'lodash/isString';\nimport isUndefined from 'lodash/isUndefined';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport isNull from 'lodash/isNull';\nimport values from 'lodash/values';\n\n/** */\nexport const validatePlugin = (plugin) =>\n [checkPlugin, checkName, checkTarget, checkMode, checkMapStateToProps, checkMapDispatchToProps, checkReducers].every((check) =>\n check(plugin),\n );\n\n/** */\nconst checkPlugin = (plugin) => isObject(plugin);\n\n/** */\nconst checkName = (plugin) => {\n const { name } = plugin;\n return isUndefined(name) || isString(name);\n};\n\n/** */\nconst checkTarget = (plugin) => {\n const { mode, target } = plugin;\n if (isUndefined(mode)) return isUndefined(target);\n\n return isString(target);\n};\n\n/** */\nconst checkMode = (plugin) => {\n const { mode } = plugin;\n return isUndefined(mode) || ['add', 'wrap'].some((s) => s === mode);\n};\n\n/** */\nconst checkMapStateToProps = (plugin) => {\n const { mapStateToProps } = plugin;\n return isUndefined(mapStateToProps) || isNull(mapStateToProps) || isFunction(mapStateToProps);\n};\n\n/** */\nconst checkMapDispatchToProps = (plugin) => {\n const { mapDispatchToProps } = plugin;\n return (\n isUndefined(mapDispatchToProps) ||\n isNull(mapDispatchToProps) ||\n isFunction(mapDispatchToProps) ||\n isObject(mapDispatchToProps)\n );\n};\n\n/** */\nconst checkReducers = (plugin) => {\n const { reducers } = plugin;\n return isUndefined(reducers) || (isObject(reducers) && values(reducers).every(isFunction));\n};\n","import deepmerge from 'deepmerge';\nimport { validatePlugin } from './pluginValidation';\n\n/** */\nexport function filterValidPlugins(plugins) {\n const { validPlugins, invalidPlugins } = splitPluginsByValidation(plugins);\n logInvalidPlugins(invalidPlugins);\n return validPlugins;\n}\n\n/** */\nfunction splitPluginsByValidation(plugins) {\n const invalidPlugins = [];\n const validPlugins = [];\n plugins.forEach((plugin) => {\n if (Array.isArray(plugin)) {\n const allValid = plugin.every((p) => validatePlugin(p));\n\n allValid ? validPlugins.push(...plugin) : invalidPlugins.push(...plugin);\n } else {\n validatePlugin(plugin) ? validPlugins.push(plugin) : invalidPlugins.push(plugin);\n }\n });\n return { invalidPlugins, validPlugins };\n}\n\n/** */\nfunction logInvalidPlugins(plugins) {\n plugins.forEach((plugin) => console.log(`Mirador: Plugin ${plugin.name} is not valid and was rejected.`));\n}\n\n/** */\nexport function getReducersFromPlugins(plugins) {\n return plugins && plugins.reduce((acc, plugin) => ({ ...acc, ...plugin.reducers }), {});\n}\n\n/** */\nexport function getConfigFromPlugins(plugins) {\n return plugins && plugins.reduce((acc, plugin) => deepmerge(acc, plugin.config || {}), {});\n}\n\n/** */\nexport function getSagasFromPlugins(plugins) {\n return plugins && plugins.filter((plugin) => plugin.saga).map((plugin) => plugin.saga);\n}\n","// src/index.ts\nfunction createThunkMiddleware(extraArgument) {\n const middleware = ({ dispatch, getState }) => (next) => (action) => {\n if (typeof action === \"function\") {\n return action(dispatch, getState, extraArgument);\n }\n return next(action);\n };\n return middleware;\n}\nvar thunk = createThunkMiddleware();\nvar withExtraArgument = createThunkMiddleware;\nexport {\n thunk,\n withExtraArgument\n};\n","var createSymbol = function createSymbol(name) {\n return \"@@redux-saga/\" + name;\n};\nvar CANCEL = /*#__PURE__*/createSymbol('CANCEL_PROMISE');\nvar CHANNEL_END_TYPE = /*#__PURE__*/createSymbol('CHANNEL_END');\nvar IO = /*#__PURE__*/createSymbol('IO');\nvar MATCH = /*#__PURE__*/createSymbol('MATCH');\nvar MULTICAST = /*#__PURE__*/createSymbol('MULTICAST');\nvar SAGA_ACTION = /*#__PURE__*/createSymbol('SAGA_ACTION');\nvar SELF_CANCELLATION = /*#__PURE__*/createSymbol('SELF_CANCELLATION');\nvar TASK = /*#__PURE__*/createSymbol('TASK');\nvar TASK_CANCEL = /*#__PURE__*/createSymbol('TASK_CANCEL');\nvar TERMINATE = /*#__PURE__*/createSymbol('TERMINATE');\nvar SAGA_LOCATION = /*#__PURE__*/createSymbol('LOCATION');\n\nexport { CANCEL, CHANNEL_END_TYPE, IO, MATCH, MULTICAST, SAGA_ACTION, SAGA_LOCATION, SELF_CANCELLATION, TASK, TASK_CANCEL, TERMINATE };\n","import { TASK, SAGA_ACTION, MULTICAST, IO } from '@redux-saga/symbols';\n\nvar undef = function undef(v) {\n return v === null || v === undefined;\n};\nvar notUndef = function notUndef(v) {\n return v !== null && v !== undefined;\n};\nvar func = function func(f) {\n return typeof f === 'function';\n};\nvar number = function number(n) {\n return typeof n === 'number';\n};\nvar string = function string(s) {\n return typeof s === 'string';\n};\nvar array = Array.isArray;\nvar object = function object(obj) {\n return obj && !array(obj) && typeof obj === 'object';\n};\nvar promise = function promise(p) {\n return p && func(p.then);\n};\nvar iterator = function iterator(it) {\n return it && func(it.next) && func(it.throw);\n};\nvar iterable = function iterable(it) {\n return it && func(Symbol) ? func(it[Symbol.iterator]) : array(it);\n};\nvar task = function task(t) {\n return t && t[TASK];\n};\nvar sagaAction = function sagaAction(a) {\n return Boolean(a && a[SAGA_ACTION]);\n};\nvar observable = function observable(ob) {\n return ob && func(ob.subscribe);\n};\nvar buffer = function buffer(buf) {\n return buf && func(buf.isEmpty) && func(buf.take) && func(buf.put);\n};\nvar _pattern = function pattern(pat) {\n return pat && (string(pat) || symbol(pat) || func(pat) || array(pat) && pat.every(_pattern));\n};\nvar channel = function channel(ch) {\n return ch && func(ch.take) && func(ch.close);\n};\nvar stringableFunc = function stringableFunc(f) {\n return func(f) && f.hasOwnProperty('toString');\n};\nvar symbol = function symbol(sym) {\n return Boolean(sym) && typeof Symbol === 'function' && sym.constructor === Symbol && sym !== Symbol.prototype;\n};\nvar multicast = function multicast(ch) {\n return channel(ch) && ch[MULTICAST];\n};\nvar effect = function effect(eff) {\n return eff && eff[IO];\n};\n\nexport { array, buffer, channel, effect, func, iterable, iterator, multicast, notUndef, number, object, observable, _pattern as pattern, promise, sagaAction, string, stringableFunc, symbol, task, undef };\n","import { CANCEL } from '@redux-saga/symbols';\n\nvar MAX_SIGNED_INT = 2147483647;\nfunction delayP(ms, val) {\n if (val === void 0) {\n val = true;\n }\n var timeoutId;\n var promise = new Promise(function (resolve) {\n timeoutId = setTimeout(resolve, Math.min(MAX_SIGNED_INT, ms), val);\n });\n promise[CANCEL] = function () {\n clearTimeout(timeoutId);\n };\n return promise;\n}\n\nexport { delayP as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport delayP from '@redux-saga/delay-p';\nimport * as is from '@redux-saga/is';\nimport { TERMINATE, TASK_CANCEL, SAGA_LOCATION, SAGA_ACTION, IO, SELF_CANCELLATION } from '@redux-saga/symbols';\n\nvar konst = function konst(v) {\n return function () {\n return v;\n };\n};\nvar kTrue = /*#__PURE__*/konst(true);\nvar noop = function noop() {};\nvar identity = function identity(v) {\n return v;\n};\nvar assignWithSymbols = function assignWithSymbols(target, source) {\n _extends(target, source);\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(source).forEach(function (s) {\n target[s] = source[s];\n });\n }\n};\nvar flatMap = function flatMap(mapper, arr) {\n var _ref;\n return (_ref = []).concat.apply(_ref, arr.map(mapper));\n};\nfunction remove(array, item) {\n var index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction once(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n fn();\n };\n}\nvar kThrow = function kThrow(err) {\n throw err;\n};\nvar kReturn = function kReturn(value) {\n return {\n value: value,\n done: true\n };\n};\nfunction makeIterator(next, thro, name) {\n if (thro === void 0) {\n thro = kThrow;\n }\n if (name === void 0) {\n name = 'iterator';\n }\n var iterator = {\n meta: {\n name: name\n },\n next: next,\n throw: thro,\n return: kReturn,\n isSagaIterator: true\n };\n if (typeof Symbol !== 'undefined') {\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n }\n return iterator;\n}\nfunction logError(error, _ref2) {\n var sagaStack = _ref2.sagaStack;\n /*eslint-disable no-console*/\n console.error(error);\n console.error(sagaStack);\n}\n\n// creates empty, but not-holey array\nvar createEmptyArray = function createEmptyArray(n) {\n return Array.apply(null, new Array(n));\n};\nvar wrapSagaDispatch = function wrapSagaDispatch(dispatch) {\n return function (action) {\n return dispatch(Object.defineProperty(action, SAGA_ACTION, {\n value: true\n }));\n };\n};\nvar shouldTerminate = function shouldTerminate(res) {\n return res === TERMINATE;\n};\nvar shouldCancel = function shouldCancel(res) {\n return res === TASK_CANCEL;\n};\nvar shouldComplete = function shouldComplete(res) {\n return shouldTerminate(res) || shouldCancel(res);\n};\nfunction createAllStyleChildCallbacks(shape, parentCallback) {\n var keys = Object.keys(shape);\n var totalCount = keys.length;\n var completedCount = 0;\n var completed;\n var results = is.array(shape) ? createEmptyArray(totalCount) : {};\n var childCallbacks = {};\n function checkEnd() {\n if (completedCount === totalCount) {\n completed = true;\n parentCallback(results);\n }\n }\n keys.forEach(function (key) {\n var chCbAtKey = function chCbAtKey(res, isErr) {\n if (completed) {\n return;\n }\n if (isErr || shouldComplete(res)) {\n parentCallback.cancel();\n parentCallback(res, isErr);\n } else {\n results[key] = res;\n completedCount++;\n checkEnd();\n }\n };\n chCbAtKey.cancel = noop;\n childCallbacks[key] = chCbAtKey;\n });\n parentCallback.cancel = function () {\n if (!completed) {\n completed = true;\n keys.forEach(function (key) {\n return childCallbacks[key].cancel();\n });\n }\n };\n return childCallbacks;\n}\nfunction getMetaInfo(fn) {\n return {\n name: fn.name || 'anonymous',\n location: getLocation(fn)\n };\n}\nfunction getLocation(instrumented) {\n return instrumented[SAGA_LOCATION];\n}\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\nvar BUFFER_OVERFLOW = \"Channel's Buffer overflow!\";\nvar ON_OVERFLOW_THROW = 1;\nvar ON_OVERFLOW_DROP = 2;\nvar ON_OVERFLOW_SLIDE = 3;\nvar ON_OVERFLOW_EXPAND = 4;\nvar zeroBuffer = {\n isEmpty: kTrue,\n put: noop,\n take: noop\n};\nfunction ringBuffer(limit, overflowAction) {\n if (limit === void 0) {\n limit = 10;\n }\n var arr = new Array(limit);\n var length = 0;\n var pushIndex = 0;\n var popIndex = 0;\n var push = function push(it) {\n arr[pushIndex] = it;\n pushIndex = (pushIndex + 1) % limit;\n length++;\n };\n var take = function take() {\n if (length != 0) {\n var it = arr[popIndex];\n arr[popIndex] = null;\n length--;\n popIndex = (popIndex + 1) % limit;\n return it;\n }\n };\n var flush = function flush() {\n var items = [];\n while (length) {\n items.push(take());\n }\n return items;\n };\n return {\n isEmpty: function isEmpty() {\n return length == 0;\n },\n put: function put(it) {\n if (length < limit) {\n push(it);\n } else {\n var doubledLimit;\n switch (overflowAction) {\n case ON_OVERFLOW_THROW:\n throw new Error(BUFFER_OVERFLOW);\n case ON_OVERFLOW_SLIDE:\n arr[pushIndex] = it;\n pushIndex = (pushIndex + 1) % limit;\n popIndex = pushIndex;\n break;\n case ON_OVERFLOW_EXPAND:\n doubledLimit = 2 * limit;\n arr = flush();\n length = arr.length;\n pushIndex = arr.length;\n popIndex = 0;\n arr.length = doubledLimit;\n limit = doubledLimit;\n push(it);\n break;\n // DROP\n }\n }\n },\n take: take,\n flush: flush\n };\n}\nvar none = function none() {\n return zeroBuffer;\n};\nvar fixed = function fixed(limit) {\n return ringBuffer(limit, ON_OVERFLOW_THROW);\n};\nvar dropping = function dropping(limit) {\n return ringBuffer(limit, ON_OVERFLOW_DROP);\n};\nvar sliding = function sliding(limit) {\n return ringBuffer(limit, ON_OVERFLOW_SLIDE);\n};\nvar expanding = function expanding(initialSize) {\n return ringBuffer(initialSize, ON_OVERFLOW_EXPAND);\n};\n\nvar buffers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n none: none,\n fixed: fixed,\n dropping: dropping,\n sliding: sliding,\n expanding: expanding\n});\n\nvar TAKE = 'TAKE';\nvar PUT = 'PUT';\nvar ALL = 'ALL';\nvar RACE = 'RACE';\nvar CALL = 'CALL';\nvar CPS = 'CPS';\nvar FORK = 'FORK';\nvar JOIN = 'JOIN';\nvar CANCEL = 'CANCEL';\nvar SELECT = 'SELECT';\nvar ACTION_CHANNEL = 'ACTION_CHANNEL';\nvar CANCELLED = 'CANCELLED';\nvar FLUSH = 'FLUSH';\nvar GET_CONTEXT = 'GET_CONTEXT';\nvar SET_CONTEXT = 'SET_CONTEXT';\n\nvar effectTypes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n TAKE: TAKE,\n PUT: PUT,\n ALL: ALL,\n RACE: RACE,\n CALL: CALL,\n CPS: CPS,\n FORK: FORK,\n JOIN: JOIN,\n CANCEL: CANCEL,\n SELECT: SELECT,\n ACTION_CHANNEL: ACTION_CHANNEL,\n CANCELLED: CANCELLED,\n FLUSH: FLUSH,\n GET_CONTEXT: GET_CONTEXT,\n SET_CONTEXT: SET_CONTEXT\n});\n\nvar makeEffect = function makeEffect(type, payload) {\n var _ref;\n return _ref = {}, _ref[IO] = true, _ref.combinator = false, _ref.type = type, _ref.payload = payload, _ref;\n};\nvar detach = function detach(eff) {\n return makeEffect(FORK, _extends({}, eff.payload, {\n detached: true\n }));\n};\nfunction take(patternOrChannel, multicastPattern) {\n if (patternOrChannel === void 0) {\n patternOrChannel = '*';\n }\n if (is.pattern(patternOrChannel)) {\n if (is.notUndef(multicastPattern)) {\n /* eslint-disable no-console */\n console.warn(\"take(pattern) takes one argument but two were provided. Consider passing an array for listening to several action types\");\n }\n return makeEffect(TAKE, {\n pattern: patternOrChannel\n });\n }\n if (is.multicast(patternOrChannel) && is.notUndef(multicastPattern) && is.pattern(multicastPattern)) {\n return makeEffect(TAKE, {\n channel: patternOrChannel,\n pattern: multicastPattern\n });\n }\n if (is.channel(patternOrChannel)) {\n if (is.notUndef(multicastPattern)) {\n /* eslint-disable no-console */\n console.warn(\"take(channel) takes one argument but two were provided. Second argument is ignored.\");\n }\n return makeEffect(TAKE, {\n channel: patternOrChannel\n });\n }\n}\nvar takeMaybe = function takeMaybe() {\n var eff = take.apply(void 0, arguments);\n eff.payload.maybe = true;\n return eff;\n};\nfunction put(channel, action) {\n if (is.undef(action)) {\n action = channel;\n // `undefined` instead of `null` to make default parameter work\n channel = undefined;\n }\n return makeEffect(PUT, {\n channel: channel,\n action: action\n });\n}\nvar putResolve = function putResolve() {\n var eff = put.apply(void 0, arguments);\n eff.payload.resolve = true;\n return eff;\n};\nfunction all(effects) {\n var eff = makeEffect(ALL, effects);\n eff.combinator = true;\n return eff;\n}\nfunction race(effects) {\n var eff = makeEffect(RACE, effects);\n eff.combinator = true;\n return eff;\n}\nfunction getFnCallDescriptor(fnDescriptor, args) {\n var context = null;\n var fn;\n if (is.func(fnDescriptor)) {\n fn = fnDescriptor;\n } else {\n if (is.array(fnDescriptor)) {\n context = fnDescriptor[0];\n fn = fnDescriptor[1];\n } else {\n context = fnDescriptor.context;\n fn = fnDescriptor.fn;\n }\n if (context && is.string(fn) && is.func(context[fn])) {\n fn = context[fn];\n }\n }\n return {\n context: context,\n fn: fn,\n args: args\n };\n}\nfunction call(fnDescriptor) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return makeEffect(CALL, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction apply(context, fn, args) {\n if (args === void 0) {\n args = [];\n }\n return makeEffect(CALL, getFnCallDescriptor([context, fn], args));\n}\nfunction cps(fnDescriptor) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return makeEffect(CPS, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction fork(fnDescriptor) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return makeEffect(FORK, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction spawn(fnDescriptor) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n return detach(fork.apply(void 0, [fnDescriptor].concat(args)));\n}\nfunction join(taskOrTasks) {\n return makeEffect(JOIN, taskOrTasks);\n}\nfunction cancel(taskOrTasks) {\n if (taskOrTasks === void 0) {\n taskOrTasks = SELF_CANCELLATION;\n }\n return makeEffect(CANCEL, taskOrTasks);\n}\nfunction select(selector) {\n if (selector === void 0) {\n selector = identity;\n }\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n return makeEffect(SELECT, {\n selector: selector,\n args: args\n });\n}\n\n/**\n channel(pattern, [buffer]) => creates a proxy channel for store actions\n**/\nfunction actionChannel(pattern, buffer) {\n return makeEffect(ACTION_CHANNEL, {\n pattern: pattern,\n buffer: buffer\n });\n}\nfunction cancelled() {\n return makeEffect(CANCELLED, {});\n}\nfunction flush(channel) {\n return makeEffect(FLUSH, channel);\n}\nfunction getContext(prop) {\n return makeEffect(GET_CONTEXT, prop);\n}\nfunction setContext(props) {\n return makeEffect(SET_CONTEXT, props);\n}\nvar delay = /*#__PURE__*/call.bind(null, delayP);\n\nexport { join as $, ALL as A, buffers as B, CALL as C, detach as D, take as E, FORK as F, GET_CONTEXT as G, fork as H, cancel as I, JOIN as J, call as K, delay as L, actionChannel as M, sliding as N, race as O, PUT as P, effectTypes as Q, RACE as R, SELECT as S, TAKE as T, takeMaybe as U, put as V, putResolve as W, all as X, apply as Y, cps as Z, spawn as _, CPS as a, select as a0, cancelled as a1, flush as a2, getContext as a3, setContext as a4, CANCEL as b, ACTION_CHANNEL as c, CANCELLED as d, expanding as e, FLUSH as f, SET_CONTEXT as g, getMetaInfo as h, createAllStyleChildCallbacks as i, createEmptyArray as j, kTrue as k, assignWithSymbols as l, makeIterator as m, none as n, once as o, noop as p, getLocation as q, remove as r, shouldComplete as s, flatMap as t, shouldCancel as u, shouldTerminate as v, compose as w, wrapSagaDispatch as x, logError as y, identity as z };\n","function deferred() {\n var def = {};\n def.promise = new Promise(function (resolve, reject) {\n def.resolve = resolve;\n def.reject = reject;\n });\n return def;\n}\nfunction arrayOfDeferred(length) {\n var arr = [];\n for (var i = 0; i < length; i++) {\n arr.push(deferred());\n }\n return arr;\n}\n\nexport { arrayOfDeferred, deferred as default };\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import { CHANNEL_END_TYPE, MULTICAST, MATCH, SAGA_ACTION, CANCEL, SELF_CANCELLATION, TERMINATE, TASK, TASK_CANCEL, IO } from '@redux-saga/symbols';\nexport { CANCEL, SAGA_LOCATION } from '@redux-saga/symbols';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport * as is from '@redux-saga/is';\nimport { k as kTrue, e as expanding, o as once, r as remove, n as none, T as TAKE, P as PUT, A as ALL, R as RACE, C as CALL, a as CPS, F as FORK, J as JOIN, b as CANCEL$1, S as SELECT, c as ACTION_CHANNEL, d as CANCELLED$1, f as FLUSH, G as GET_CONTEXT, g as SET_CONTEXT, h as getMetaInfo, i as createAllStyleChildCallbacks, j as createEmptyArray, l as assignWithSymbols, m as makeIterator, p as noop, s as shouldComplete, q as getLocation, t as flatMap, u as shouldCancel, v as shouldTerminate, w as compose, x as wrapSagaDispatch, y as logError, z as identity } from './io-dec07f91.esm.js';\nexport { B as buffers, D as detach } from './io-dec07f91.esm.js';\nimport deferred from '@redux-saga/deferred';\nimport _arrayLikeToArray from '@babel/runtime/helpers/esm/arrayLikeToArray';\nimport '@redux-saga/delay-p';\n\nvar queue = [];\n/**\n Variable to hold a counting semaphore\n - Incrementing adds a lock and puts the scheduler in a `suspended` state (if it's not\n already suspended)\n - Decrementing releases a lock. Zero locks puts the scheduler in a `released` state. This\n triggers flushing the queued tasks.\n**/\nvar semaphore = 0;\n\n/**\n Executes a task 'atomically'. Tasks scheduled during this execution will be queued\n and flushed after this task has finished (assuming the scheduler endup in a released\n state).\n**/\nfunction exec(task) {\n try {\n suspend();\n task();\n } finally {\n release();\n }\n}\n\n/**\n Executes or queues a task depending on the state of the scheduler (`suspended` or `released`)\n**/\nfunction asap(task) {\n queue.push(task);\n if (!semaphore) {\n suspend();\n flush();\n }\n}\n\n/**\n * Puts the scheduler in a `suspended` state and executes a task immediately.\n */\nfunction immediately(task) {\n try {\n suspend();\n return task();\n } finally {\n flush();\n }\n}\n\n/**\n Puts the scheduler in a `suspended` state. Scheduled tasks will be queued until the\n scheduler is released.\n**/\nfunction suspend() {\n semaphore++;\n}\n\n/**\n Puts the scheduler in a `released` state.\n**/\nfunction release() {\n semaphore--;\n}\n\n/**\n Releases the current lock. Executes all queued tasks if the scheduler is in the released state.\n**/\nfunction flush() {\n release();\n var task;\n while (!semaphore && (task = queue.shift()) !== undefined) {\n exec(task);\n }\n}\n\nvar array = function array(patterns) {\n return function (input) {\n return patterns.some(function (p) {\n return matcher(p)(input);\n });\n };\n};\nvar predicate = function predicate(_predicate) {\n return function (input) {\n return _predicate(input);\n };\n};\nvar string = function string(pattern) {\n return function (input) {\n return input.type === String(pattern);\n };\n};\nvar symbol = function symbol(pattern) {\n return function (input) {\n return input.type === pattern;\n };\n};\nvar wildcard = function wildcard() {\n return kTrue;\n};\nfunction matcher(pattern) {\n // prettier-ignore\n var matcherCreator = pattern === '*' ? wildcard : is.string(pattern) ? string : is.array(pattern) ? array : is.stringableFunc(pattern) ? string : is.func(pattern) ? predicate : is.symbol(pattern) ? symbol : null;\n if (matcherCreator === null) {\n throw new Error(\"invalid pattern: \" + pattern);\n }\n return matcherCreator(pattern);\n}\n\nvar END = {\n type: CHANNEL_END_TYPE\n};\nvar isEnd = function isEnd(a) {\n return a && a.type === CHANNEL_END_TYPE;\n};\nfunction channel(buffer) {\n if (buffer === void 0) {\n buffer = expanding();\n }\n var closed = false;\n var takers = [];\n function put(input) {\n if (closed) {\n return;\n }\n if (takers.length === 0) {\n return buffer.put(input);\n }\n var cb = takers.shift();\n cb(input);\n }\n function take(cb) {\n if (closed && buffer.isEmpty()) {\n cb(END);\n } else if (!buffer.isEmpty()) {\n cb(buffer.take());\n } else {\n takers.push(cb);\n cb.cancel = function () {\n remove(takers, cb);\n };\n }\n }\n function flush(cb) {\n if (closed && buffer.isEmpty()) {\n cb(END);\n return;\n }\n cb(buffer.flush());\n }\n function close() {\n if (closed) {\n return;\n }\n closed = true;\n var arr = takers;\n takers = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n var taker = arr[i];\n taker(END);\n }\n }\n return {\n take: take,\n put: put,\n flush: flush,\n close: close\n };\n}\nfunction eventChannel(subscribe, buffer) {\n if (buffer === void 0) {\n buffer = none();\n }\n var closed = false;\n var unsubscribe;\n var chan = channel(buffer);\n var close = function close() {\n if (closed) {\n return;\n }\n closed = true;\n if (is.func(unsubscribe)) {\n unsubscribe();\n }\n chan.close();\n };\n unsubscribe = subscribe(function (input) {\n if (isEnd(input)) {\n close();\n return;\n }\n chan.put(input);\n });\n unsubscribe = once(unsubscribe);\n if (closed) {\n unsubscribe();\n }\n return {\n take: chan.take,\n flush: chan.flush,\n close: close\n };\n}\nfunction multicastChannel() {\n var _ref;\n var closed = false;\n var currentTakers = [];\n var nextTakers = currentTakers;\n var ensureCanMutateNextTakers = function ensureCanMutateNextTakers() {\n if (nextTakers !== currentTakers) {\n return;\n }\n nextTakers = currentTakers.slice();\n };\n var close = function close() {\n closed = true;\n var takers = currentTakers = nextTakers;\n nextTakers = [];\n takers.forEach(function (taker) {\n taker(END);\n });\n };\n return _ref = {}, _ref[MULTICAST] = true, _ref.put = function put(input) {\n if (closed) {\n return;\n }\n if (isEnd(input)) {\n close();\n return;\n }\n var takers = currentTakers = nextTakers;\n for (var i = 0, len = takers.length; i < len; i++) {\n var taker = takers[i];\n if (taker[MATCH](input)) {\n taker.cancel();\n taker(input);\n }\n }\n }, _ref.take = function take(cb, matcher) {\n if (matcher === void 0) {\n matcher = wildcard;\n }\n if (closed) {\n cb(END);\n return;\n }\n cb[MATCH] = matcher;\n ensureCanMutateNextTakers();\n nextTakers.push(cb);\n cb.cancel = once(function () {\n ensureCanMutateNextTakers();\n remove(nextTakers, cb);\n });\n }, _ref.close = close, _ref;\n}\nfunction stdChannel() {\n var chan = multicastChannel();\n var put = chan.put;\n chan.put = function (input) {\n if (input[SAGA_ACTION]) {\n put(input);\n return;\n }\n asap(function () {\n put(input);\n });\n };\n return chan;\n}\n\nvar RUNNING = 0;\nvar CANCELLED = 1;\nvar ABORTED = 2;\nvar DONE = 3;\n\nfunction resolvePromise(promise, cb) {\n var cancelPromise = promise[CANCEL];\n if (is.func(cancelPromise)) {\n cb.cancel = cancelPromise;\n }\n promise.then(cb, function (error) {\n cb(error, true);\n });\n}\n\nvar current = 0;\nvar nextSagaId = (function () {\n return ++current;\n});\n\nvar _effectRunnerMap;\nfunction getIteratorMetaInfo(iterator, fn) {\n if (iterator.isSagaIterator) {\n return {\n name: iterator.meta.name\n };\n }\n return getMetaInfo(fn);\n}\nfunction createTaskIterator(_ref) {\n var context = _ref.context,\n fn = _ref.fn,\n args = _ref.args;\n // catch synchronous failures; see #152 and #441\n try {\n var result = fn.apply(context, args);\n\n // i.e. a generator function returns an iterator\n if (is.iterator(result)) {\n return result;\n }\n var resolved = false;\n var next = function next(arg) {\n if (!resolved) {\n resolved = true;\n // Only promises returned from fork will be interpreted. See #1573\n return {\n value: result,\n done: !is.promise(result)\n };\n } else {\n return {\n value: arg,\n done: true\n };\n }\n };\n return makeIterator(next);\n } catch (err) {\n // do not bubble up synchronous failures for detached forks\n // instead create a failed task. See #152 and #441\n return makeIterator(function () {\n throw err;\n });\n }\n}\nfunction runPutEffect(env, _ref2, cb) {\n var channel = _ref2.channel,\n action = _ref2.action,\n resolve = _ref2.resolve;\n /**\n Schedule the put in case another saga is holding a lock.\n The put will be executed atomically. ie nested puts will execute after\n this put has terminated.\n **/\n asap(function () {\n var result;\n try {\n result = (channel ? channel.put : env.dispatch)(action);\n } catch (error) {\n cb(error, true);\n return;\n }\n if (resolve && is.promise(result)) {\n resolvePromise(result, cb);\n } else {\n cb(result);\n }\n });\n // Put effects are non cancellables\n}\nfunction runTakeEffect(env, _ref3, cb) {\n var _ref3$channel = _ref3.channel,\n channel = _ref3$channel === void 0 ? env.channel : _ref3$channel,\n pattern = _ref3.pattern,\n maybe = _ref3.maybe;\n var takeCb = function takeCb(input) {\n if (input instanceof Error) {\n cb(input, true);\n return;\n }\n if (isEnd(input) && !maybe) {\n cb(TERMINATE);\n return;\n }\n cb(input);\n };\n try {\n channel.take(takeCb, is.notUndef(pattern) ? matcher(pattern) : null);\n } catch (err) {\n cb(err, true);\n return;\n }\n cb.cancel = takeCb.cancel;\n}\nfunction runCallEffect(env, _ref4, cb, _ref5) {\n var context = _ref4.context,\n fn = _ref4.fn,\n args = _ref4.args;\n var task = _ref5.task;\n // catch synchronous failures; see #152\n try {\n var result = fn.apply(context, args);\n if (is.promise(result)) {\n resolvePromise(result, cb);\n return;\n }\n if (is.iterator(result)) {\n // resolve iterator\n proc(env, result, task.context, current, getMetaInfo(fn), /* isRoot */false, cb);\n return;\n }\n cb(result);\n } catch (error) {\n cb(error, true);\n }\n}\nfunction runCPSEffect(env, _ref6, cb) {\n var context = _ref6.context,\n fn = _ref6.fn,\n args = _ref6.args;\n // CPS (ie node style functions) can define their own cancellation logic\n // by setting cancel field on the cb\n\n // catch synchronous failures; see #152\n try {\n var cpsCb = function cpsCb(err, res) {\n if (is.undef(err)) {\n cb(res);\n } else {\n cb(err, true);\n }\n };\n fn.apply(context, args.concat(cpsCb));\n if (cpsCb.cancel) {\n cb.cancel = cpsCb.cancel;\n }\n } catch (error) {\n cb(error, true);\n }\n}\nfunction runForkEffect(env, _ref7, cb, _ref8) {\n var context = _ref7.context,\n fn = _ref7.fn,\n args = _ref7.args,\n detached = _ref7.detached;\n var parent = _ref8.task;\n var taskIterator = createTaskIterator({\n context: context,\n fn: fn,\n args: args\n });\n var meta = getIteratorMetaInfo(taskIterator, fn);\n immediately(function () {\n var child = proc(env, taskIterator, parent.context, current, meta, detached, undefined);\n if (detached) {\n cb(child);\n } else {\n if (child.isRunning()) {\n parent.queue.addTask(child);\n cb(child);\n } else if (child.isAborted()) {\n parent.queue.abort(child.error());\n } else {\n cb(child);\n }\n }\n });\n // Fork effects are non cancellables\n}\nfunction runJoinEffect(env, taskOrTasks, cb, _ref9) {\n var task = _ref9.task;\n var joinSingleTask = function joinSingleTask(taskToJoin, cb) {\n if (taskToJoin.isRunning()) {\n var joiner = {\n task: task,\n cb: cb\n };\n cb.cancel = function () {\n if (taskToJoin.isRunning()) remove(taskToJoin.joiners, joiner);\n };\n taskToJoin.joiners.push(joiner);\n } else {\n if (taskToJoin.isAborted()) {\n cb(taskToJoin.error(), true);\n } else {\n cb(taskToJoin.result());\n }\n }\n };\n if (is.array(taskOrTasks)) {\n if (taskOrTasks.length === 0) {\n cb([]);\n return;\n }\n var childCallbacks = createAllStyleChildCallbacks(taskOrTasks, cb);\n taskOrTasks.forEach(function (t, i) {\n joinSingleTask(t, childCallbacks[i]);\n });\n } else {\n joinSingleTask(taskOrTasks, cb);\n }\n}\nfunction cancelSingleTask(taskToCancel) {\n if (taskToCancel.isRunning()) {\n taskToCancel.cancel();\n }\n}\nfunction runCancelEffect(env, taskOrTasks, cb, _ref0) {\n var task = _ref0.task;\n if (taskOrTasks === SELF_CANCELLATION) {\n cancelSingleTask(task);\n } else if (is.array(taskOrTasks)) {\n taskOrTasks.forEach(cancelSingleTask);\n } else {\n cancelSingleTask(taskOrTasks);\n }\n cb();\n // cancel effects are non cancellables\n}\nfunction runAllEffect(env, effects, cb, _ref1) {\n var digestEffect = _ref1.digestEffect;\n var effectId = current;\n var keys = Object.keys(effects);\n if (keys.length === 0) {\n cb(is.array(effects) ? [] : {});\n return;\n }\n var childCallbacks = createAllStyleChildCallbacks(effects, cb);\n keys.forEach(function (key) {\n digestEffect(effects[key], effectId, childCallbacks[key], key);\n });\n}\nfunction runRaceEffect(env, effects, cb, _ref10) {\n var digestEffect = _ref10.digestEffect;\n var effectId = current;\n var keys = Object.keys(effects);\n var response = is.array(effects) ? createEmptyArray(keys.length) : {};\n var childCbs = {};\n var completed = false;\n keys.forEach(function (key) {\n var chCbAtKey = function chCbAtKey(res, isErr) {\n if (completed) {\n return;\n }\n if (isErr || shouldComplete(res)) {\n // Race Auto cancellation\n cb.cancel();\n cb(res, isErr);\n } else {\n cb.cancel();\n completed = true;\n response[key] = res;\n cb(response);\n }\n };\n chCbAtKey.cancel = noop;\n childCbs[key] = chCbAtKey;\n });\n cb.cancel = function () {\n // prevents unnecessary cancellation\n if (!completed) {\n completed = true;\n keys.forEach(function (key) {\n return childCbs[key].cancel();\n });\n }\n };\n keys.forEach(function (key) {\n if (completed) {\n return;\n }\n digestEffect(effects[key], effectId, childCbs[key], key);\n });\n}\nfunction runSelectEffect(env, _ref11, cb) {\n var selector = _ref11.selector,\n args = _ref11.args;\n try {\n var state = selector.apply(void 0, [env.getState()].concat(args));\n cb(state);\n } catch (error) {\n cb(error, true);\n }\n}\nfunction runChannelEffect(env, _ref12, cb) {\n var pattern = _ref12.pattern,\n buffer = _ref12.buffer;\n var chan = channel(buffer);\n var match = matcher(pattern);\n var _taker = function taker(action) {\n if (!isEnd(action)) {\n env.channel.take(_taker, match);\n }\n chan.put(action);\n };\n var close = chan.close;\n chan.close = function () {\n _taker.cancel();\n close();\n };\n env.channel.take(_taker, match);\n cb(chan);\n}\nfunction runCancelledEffect(env, data, cb, _ref13) {\n var task = _ref13.task;\n cb(task.isCancelled());\n}\nfunction runFlushEffect(env, channel, cb) {\n channel.flush(cb);\n}\nfunction runGetContextEffect(env, prop, cb, _ref14) {\n var task = _ref14.task;\n cb(task.context[prop]);\n}\nfunction runSetContextEffect(env, props, cb, _ref15) {\n var task = _ref15.task;\n assignWithSymbols(task.context, props);\n cb();\n}\nvar effectRunnerMap = (_effectRunnerMap = {}, _effectRunnerMap[TAKE] = runTakeEffect, _effectRunnerMap[PUT] = runPutEffect, _effectRunnerMap[ALL] = runAllEffect, _effectRunnerMap[RACE] = runRaceEffect, _effectRunnerMap[CALL] = runCallEffect, _effectRunnerMap[CPS] = runCPSEffect, _effectRunnerMap[FORK] = runForkEffect, _effectRunnerMap[JOIN] = runJoinEffect, _effectRunnerMap[CANCEL$1] = runCancelEffect, _effectRunnerMap[SELECT] = runSelectEffect, _effectRunnerMap[ACTION_CHANNEL] = runChannelEffect, _effectRunnerMap[CANCELLED$1] = runCancelledEffect, _effectRunnerMap[FLUSH] = runFlushEffect, _effectRunnerMap[GET_CONTEXT] = runGetContextEffect, _effectRunnerMap[SET_CONTEXT] = runSetContextEffect, _effectRunnerMap);\n\n/**\n Used to track a parent task and its forks\n In the fork model, forked tasks are attached by default to their parent\n We model this using the concept of Parent task && main Task\n main task is the main flow of the current Generator, the parent tasks is the\n aggregation of the main tasks + all its forked tasks.\n Thus the whole model represents an execution tree with multiple branches (vs the\n linear execution tree in sequential (non parallel) programming)\n\n A parent tasks has the following semantics\n - It completes if all its forks either complete or all cancelled\n - If it's cancelled, all forks are cancelled as well\n - It aborts if any uncaught error bubbles up from forks\n - If it completes, the return value is the one returned by the main task\n **/\nfunction forkQueue(mainTask, onAbort, cont) {\n var tasks = [];\n var result;\n var completed = false;\n addTask(mainTask);\n var getTasks = function getTasks() {\n return tasks;\n };\n function abort(err) {\n onAbort();\n cancelAll();\n cont(err, true);\n }\n function addTask(task) {\n tasks.push(task);\n task.cont = function (res, isErr) {\n if (completed) {\n return;\n }\n remove(tasks, task);\n task.cont = noop;\n if (isErr) {\n abort(res);\n } else {\n if (task === mainTask) {\n result = res;\n }\n if (!tasks.length) {\n completed = true;\n cont(result);\n }\n }\n };\n }\n function cancelAll() {\n if (completed) {\n return;\n }\n completed = true;\n tasks.forEach(function (t) {\n t.cont = noop;\n t.cancel();\n });\n tasks = [];\n }\n return {\n addTask: addTask,\n cancelAll: cancelAll,\n abort: abort,\n getTasks: getTasks\n };\n}\n\nfunction formatLocation(fileName, lineNumber) {\n return fileName + \"?\" + lineNumber;\n}\nfunction effectLocationAsString(effect) {\n var location = getLocation(effect);\n if (location) {\n var code = location.code,\n fileName = location.fileName,\n lineNumber = location.lineNumber;\n var source = code + \" \" + formatLocation(fileName, lineNumber);\n return source;\n }\n return '';\n}\nfunction sagaLocationAsString(sagaMeta) {\n var name = sagaMeta.name,\n location = sagaMeta.location;\n if (location) {\n return name + \" \" + formatLocation(location.fileName, location.lineNumber);\n }\n return name;\n}\nfunction cancelledTasksAsString(sagaStack) {\n var cancelledTasks = flatMap(function (i) {\n return i.cancelledTasks;\n }, sagaStack);\n if (!cancelledTasks.length) {\n return '';\n }\n return ['Tasks cancelled due to error:'].concat(cancelledTasks).join('\\n');\n}\nvar crashedEffect = null;\nvar sagaStack = [];\nvar addSagaFrame = function addSagaFrame(frame) {\n frame.crashedEffect = crashedEffect;\n sagaStack.push(frame);\n};\nvar clear = function clear() {\n crashedEffect = null;\n sagaStack.length = 0;\n};\n\n// this sets crashed effect for the soon-to-be-reported saga frame\n// this slightly streatches the singleton nature of this module into wrong direction\n// as it's even less obvious what's the data flow here, but it is what it is for now\nvar setCrashedEffect = function setCrashedEffect(effect) {\n crashedEffect = effect;\n};\n\n/**\n @returns {string}\n\n @example\n The above error occurred in task errorInPutSaga {pathToFile}\n when executing effect put({type: 'REDUCER_ACTION_ERROR_IN_PUT'}) {pathToFile}\n created by fetchSaga {pathToFile}\n created by rootSaga {pathToFile}\n*/\nvar toString = function toString() {\n var firstSaga = sagaStack[0],\n otherSagas = _arrayLikeToArray(sagaStack).slice(1);\n var crashedEffectLocation = firstSaga.crashedEffect ? effectLocationAsString(firstSaga.crashedEffect) : null;\n var errorMessage = \"The above error occurred in task \" + sagaLocationAsString(firstSaga.meta) + (crashedEffectLocation ? \" \\n when executing effect \" + crashedEffectLocation : '');\n return [errorMessage].concat(otherSagas.map(function (s) {\n return \" created by \" + sagaLocationAsString(s.meta);\n }), [cancelledTasksAsString(sagaStack)]).join('\\n');\n};\n\nfunction newTask(env, mainTask, parentContext, parentEffectId, meta, isRoot, cont) {\n var _task;\n if (cont === void 0) {\n cont = noop;\n }\n var status = RUNNING;\n var taskResult;\n var taskError;\n var deferredEnd = null;\n var cancelledDueToErrorTasks = [];\n var context = Object.create(parentContext);\n var queue = forkQueue(mainTask, function onAbort() {\n cancelledDueToErrorTasks.push.apply(cancelledDueToErrorTasks, queue.getTasks().map(function (t) {\n return t.meta.name;\n }));\n }, end);\n\n /**\n This may be called by a parent generator to trigger/propagate cancellation\n cancel all pending tasks (including the main task), then end the current task.\n Cancellation propagates down to the whole execution tree held by this Parent task\n It's also propagated to all joiners of this task and their execution tree/joiners\n Cancellation is noop for terminated/Cancelled tasks tasks\n **/\n function cancel() {\n if (status === RUNNING) {\n // Setting status to CANCELLED does not necessarily mean that the task/iterators are stopped\n // effects in the iterator's finally block will still be executed\n status = CANCELLED;\n queue.cancelAll();\n // Ending with a TASK_CANCEL will propagate the Cancellation to all joiners\n end(TASK_CANCEL, false);\n }\n }\n function end(result, isErr) {\n if (!isErr) {\n // The status here may be RUNNING or CANCELLED\n // If the status is CANCELLED, then we do not need to change it here\n if (result === TASK_CANCEL) {\n status = CANCELLED;\n } else if (status !== CANCELLED) {\n status = DONE;\n }\n taskResult = result;\n deferredEnd && deferredEnd.resolve(result);\n } else {\n status = ABORTED;\n addSagaFrame({\n meta: meta,\n cancelledTasks: cancelledDueToErrorTasks\n });\n if (task.isRoot) {\n var sagaStack = toString();\n // we've dumped the saga stack to string and are passing it to user's code\n // we know that it won't be needed anymore and we need to clear it\n clear();\n env.onError(result, {\n sagaStack: sagaStack\n });\n }\n taskError = result;\n deferredEnd && deferredEnd.reject(result);\n }\n task.cont(result, isErr);\n task.joiners.forEach(function (joiner) {\n joiner.cb(result, isErr);\n });\n task.joiners = null;\n }\n function setContext(props) {\n assignWithSymbols(context, props);\n }\n function toPromise() {\n if (deferredEnd) {\n return deferredEnd.promise;\n }\n deferredEnd = deferred();\n if (status === ABORTED) {\n deferredEnd.reject(taskError);\n } else if (status !== RUNNING) {\n deferredEnd.resolve(taskResult);\n }\n return deferredEnd.promise;\n }\n var task = (_task = {}, _task[TASK] = true, _task.id = parentEffectId, _task.meta = meta, _task.isRoot = isRoot, _task.context = context, _task.joiners = [], _task.queue = queue, _task.cancel = cancel, _task.cont = cont, _task.end = end, _task.setContext = setContext, _task.toPromise = toPromise, _task.isRunning = function isRunning() {\n return status === RUNNING;\n }, _task.isCancelled = function isCancelled() {\n return status === CANCELLED || status === RUNNING && mainTask.status === CANCELLED;\n }, _task.isAborted = function isAborted() {\n return status === ABORTED;\n }, _task.result = function result() {\n return taskResult;\n }, _task.error = function error() {\n return taskError;\n }, _task);\n return task;\n}\n\nfunction proc(env, iterator, parentContext, parentEffectId, meta, isRoot, cont) {\n var finalRunEffect = env.finalizeRunEffect(runEffect);\n\n /**\n Tracks the current effect cancellation\n Each time the generator progresses. calling runEffect will set a new value\n on it. It allows propagating cancellation to child effects\n **/\n next.cancel = noop;\n\n /** Creates a main task to track the main flow */\n var mainTask = {\n meta: meta,\n cancel: cancelMain,\n status: RUNNING\n };\n\n /**\n Creates a new task descriptor for this generator.\n A task is the aggregation of it's mainTask and all it's forked tasks.\n **/\n var task = newTask(env, mainTask, parentContext, parentEffectId, meta, isRoot, cont);\n var executingContext = {\n task: task,\n digestEffect: digestEffect\n };\n\n /**\n cancellation of the main task. We'll simply resume the Generator with a TASK_CANCEL\n **/\n function cancelMain() {\n if (mainTask.status === RUNNING) {\n mainTask.status = CANCELLED;\n next(TASK_CANCEL);\n }\n }\n\n /**\n attaches cancellation logic to this task's continuation\n this will permit cancellation to propagate down the call chain\n **/\n if (cont) {\n cont.cancel = task.cancel;\n }\n var digesting = false;\n var digestingSemaphore = 0;\n var syncResume;\n\n // kicks up the generator\n next();\n\n // then return the task descriptor to the caller\n return task;\n\n /**\n * This is the generator driver\n * It's a recursive async/continuation function which calls itself\n * until the generator terminates or throws\n * @param {internal commands(TASK_CANCEL | TERMINATE) | any} arg - value, generator will be resumed with.\n * @param {boolean} isErr - the flag shows if effect finished with an error\n *\n * receives either (command | effect result, false) or (any thrown thing, true)\n */\n function next(arg, isErr) {\n var shouldQueueSyncResume = digesting && (digestingSemaphore === semaphore ||\n // `fork` enters a nested scheduler lock with `immediately`.\n digestingSemaphore > 0 && semaphore > digestingSemaphore);\n if (shouldQueueSyncResume) {\n if (shouldCancel(arg)) {\n mainTask.status = CANCELLED;\n next.cancel();\n }\n syncResume = {\n arg: arg,\n isErr: isErr\n };\n return;\n }\n try {\n var shouldContinue;\n do {\n shouldContinue = false;\n var result = void 0;\n if (isErr) {\n result = iterator.throw(arg);\n // user handled the error, we can clear bookkept values\n clear();\n } else if (shouldCancel(arg)) {\n /**\n getting TASK_CANCEL automatically cancels the main task\n We can get this value here\n - By cancelling the parent task manually\n - By joining a Cancelled task\n **/\n mainTask.status = CANCELLED;\n /**\n Cancels the current effect; this will propagate the cancellation down to any called tasks\n **/\n next.cancel();\n /**\n If this Generator has a `return` method then invokes it\n This will jump to the finally block\n **/\n result = is.func(iterator.return) ? iterator.return(TASK_CANCEL) : {\n done: true,\n value: TASK_CANCEL\n };\n } else if (shouldTerminate(arg)) {\n // We get TERMINATE flag, i.e. by taking from a channel that ended using `take` (and not `takem` used to trap End of channels)\n result = is.func(iterator.return) ? iterator.return() : {\n done: true\n };\n } else {\n result = iterator.next(arg);\n }\n if (!result.done) {\n syncResume = null;\n var previousDigesting = digesting;\n var previousDigestingSemaphore = digestingSemaphore;\n try {\n digesting = true;\n digestingSemaphore = semaphore;\n digestEffect(result.value, parentEffectId, next);\n } finally {\n digesting = previousDigesting;\n digestingSemaphore = previousDigestingSemaphore;\n }\n if (!syncResume) {\n return;\n }\n arg = syncResume.arg;\n isErr = syncResume.isErr;\n syncResume = null;\n shouldContinue = true;\n } else {\n /**\n This Generator has ended, terminate the main task and notify the fork queue\n **/\n if (mainTask.status !== CANCELLED) {\n mainTask.status = DONE;\n }\n mainTask.cont(result.value);\n return;\n }\n } while (shouldContinue);\n } catch (error) {\n if (mainTask.status === CANCELLED) {\n throw error;\n }\n mainTask.status = ABORTED;\n mainTask.cont(error, true);\n }\n }\n function runEffect(effect, effectId, currCb) {\n /**\n each effect runner must attach its own logic of cancellation to the provided callback\n it allows this generator to propagate cancellation downward.\n ATTENTION! effect runners must setup the cancel logic by setting cb.cancel = [cancelMethod]\n And the setup must occur before calling the callback\n This is a sort of inversion of control: called async functions are responsible\n of completing the flow by calling the provided continuation; while caller functions\n are responsible for aborting the current flow by calling the attached cancel function\n Library users can attach their own cancellation logic to promises by defining a\n promise[CANCEL] method in their returned promises\n ATTENTION! calling cancel must have no effect on an already completed or cancelled effect\n **/\n if (is.promise(effect)) {\n resolvePromise(effect, currCb);\n } else if (is.iterator(effect)) {\n // resolve iterator\n proc(env, effect, task.context, effectId, meta, /* isRoot */false, currCb);\n } else if (effect && effect[IO]) {\n var effectRunner = effectRunnerMap[effect.type];\n effectRunner(env, effect.payload, currCb, executingContext);\n } else {\n // anything else returned as is\n currCb(effect);\n }\n }\n function digestEffect(effect, parentEffectId, cb, label) {\n if (label === void 0) {\n label = '';\n }\n var effectId = nextSagaId();\n env.sagaMonitor && env.sagaMonitor.effectTriggered({\n effectId: effectId,\n parentEffectId: parentEffectId,\n label: label,\n effect: effect\n });\n\n /**\n completion callback and cancel callback are mutually exclusive\n We can't cancel an already completed effect\n And We can't complete an already cancelled effectId\n **/\n var effectSettled;\n\n // Completion callback passed to the appropriate effect runner\n function currCb(res, isErr) {\n if (effectSettled) {\n return;\n }\n effectSettled = true;\n cb.cancel = noop; // defensive measure\n if (env.sagaMonitor) {\n if (isErr) {\n env.sagaMonitor.effectRejected(effectId, res);\n } else {\n env.sagaMonitor.effectResolved(effectId, res);\n }\n }\n if (isErr) {\n setCrashedEffect(effect);\n }\n cb(res, isErr);\n }\n // tracks down the current cancel\n currCb.cancel = noop;\n\n // setup cancellation logic on the parent cb\n cb.cancel = function () {\n // prevents cancelling an already completed effect\n if (effectSettled) {\n return;\n }\n effectSettled = true;\n currCb.cancel(); // propagates cancel downward\n currCb.cancel = noop; // defensive measure\n\n env.sagaMonitor && env.sagaMonitor.effectCancelled(effectId);\n };\n finalRunEffect(effect, effectId, currCb);\n }\n}\n\nfunction runSaga(_ref, saga) {\n var _ref$channel = _ref.channel,\n channel = _ref$channel === void 0 ? stdChannel() : _ref$channel,\n dispatch = _ref.dispatch,\n getState = _ref.getState,\n _ref$context = _ref.context,\n context = _ref$context === void 0 ? {} : _ref$context,\n sagaMonitor = _ref.sagaMonitor,\n effectMiddlewares = _ref.effectMiddlewares,\n _ref$onError = _ref.onError,\n onError = _ref$onError === void 0 ? logError : _ref$onError;\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n var iterator = saga.apply(void 0, args);\n var effectId = nextSagaId();\n if (sagaMonitor) {\n // monitors are expected to have a certain interface, let's fill-in any missing ones\n sagaMonitor.rootSagaStarted = sagaMonitor.rootSagaStarted || noop;\n sagaMonitor.effectTriggered = sagaMonitor.effectTriggered || noop;\n sagaMonitor.effectResolved = sagaMonitor.effectResolved || noop;\n sagaMonitor.effectRejected = sagaMonitor.effectRejected || noop;\n sagaMonitor.effectCancelled = sagaMonitor.effectCancelled || noop;\n sagaMonitor.actionDispatched = sagaMonitor.actionDispatched || noop;\n sagaMonitor.rootSagaStarted({\n effectId: effectId,\n saga: saga,\n args: args\n });\n }\n var finalizeRunEffect;\n if (effectMiddlewares) {\n var middleware = compose.apply(void 0, effectMiddlewares);\n finalizeRunEffect = function finalizeRunEffect(runEffect) {\n return function (effect, effectId, currCb) {\n var plainRunEffect = function plainRunEffect(eff) {\n return runEffect(eff, effectId, currCb);\n };\n return middleware(plainRunEffect)(effect);\n };\n };\n } else {\n finalizeRunEffect = identity;\n }\n var env = {\n channel: channel,\n dispatch: wrapSagaDispatch(dispatch),\n getState: getState,\n sagaMonitor: sagaMonitor,\n onError: onError,\n finalizeRunEffect: finalizeRunEffect\n };\n return immediately(function () {\n var task = proc(env, iterator, context, effectId, getMetaInfo(saga), /* isRoot */true, undefined);\n if (sagaMonitor) {\n sagaMonitor.effectResolved(effectId, task);\n }\n return task;\n });\n}\n\nvar _excluded = [\"context\", \"channel\", \"sagaMonitor\"];\nfunction sagaMiddlewareFactory(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$context = _ref.context,\n context = _ref$context === void 0 ? {} : _ref$context,\n _ref$channel = _ref.channel,\n channel = _ref$channel === void 0 ? stdChannel() : _ref$channel,\n sagaMonitor = _ref.sagaMonitor,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n var boundRunSaga;\n function sagaMiddleware(_ref2) {\n var getState = _ref2.getState,\n dispatch = _ref2.dispatch;\n boundRunSaga = runSaga.bind(null, _extends({}, options, {\n context: context,\n channel: channel,\n dispatch: dispatch,\n getState: getState,\n sagaMonitor: sagaMonitor\n }));\n return function (next) {\n return function (action) {\n if (sagaMonitor && sagaMonitor.actionDispatched) {\n sagaMonitor.actionDispatched(action);\n }\n var result = next(action); // hit reducers\n channel.put(action);\n return result;\n };\n };\n }\n sagaMiddleware.run = function () {\n return boundRunSaga.apply(void 0, arguments);\n };\n sagaMiddleware.setContext = function (props) {\n assignWithSymbols(context, props);\n };\n return sagaMiddleware;\n}\n\nexport { END, channel, sagaMiddlewareFactory as default, eventChannel, isEnd, multicastChannel, runSaga, stdChannel };\n","import { compose } from 'redux';\nfunction extensionComposeStub() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n if (funcs.length === 0) return undefined;\n if (typeof funcs[0] === 'object') return compose;\n return compose(...funcs);\n}\nexport const composeWithDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : extensionComposeStub;\nexport const devToolsEnhancer = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};\nexport { composeWithDevTools as composeWithDevToolsDevelopmentOnly, devToolsEnhancer as devToolsEnhancerDevelopmentOnly } from './developmentOnly';\nexport { composeWithDevTools as composeWithDevToolsLogOnly, devToolsEnhancer as devToolsEnhancerLogOnly } from './logOnly';\nexport { composeWithDevTools as composeWithDevToolsLogOnlyInProduction, devToolsEnhancer as devToolsEnhancerLogOnlyInProduction } from './logOnlyInProduction';","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n\n // Prevent prototype pollution:\n // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n var index = -1,\n length = path.length;\n\n if (!length) {\n return true;\n }\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n // Always block \"__proto__\" anywhere in the path if it's not expected\n if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n return false;\n }\n\n // Block constructor/prototype as non-terminal traversal keys to prevent\n // escaping the object graph into built-in constructors and prototypes.\n if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n return false;\n }\n }\n\n var obj = parent(object, path);\n return obj == null || delete obj[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","import omit from 'lodash/omit';\nimport ActionTypes from '../actions/action-types';\n\n/** */\nexport function accessTokensReducer(state = {}, action) {\n switch (action.type) {\n case ActionTypes.RESOLVE_AUTHENTICATION_REQUEST:\n return {\n ...state,\n [action.tokenServiceId]: {\n authId: action.id,\n id: action.tokenServiceId,\n isFetching: true,\n },\n };\n case ActionTypes.REQUEST_ACCESS_TOKEN:\n return {\n ...state,\n [action.serviceId]: {\n authId: action.authId,\n id: action.serviceId,\n isFetching: true,\n },\n };\n case ActionTypes.RECEIVE_ACCESS_TOKEN:\n return {\n ...state,\n [action.serviceId]: {\n ...state[action.serviceId],\n isFetching: false,\n json: action.json,\n },\n };\n case ActionTypes.RECEIVE_ACCESS_TOKEN_FAILURE:\n return {\n ...state,\n [action.serviceId]: {\n ...state[action.serviceId],\n error: action.error,\n isFetching: false,\n },\n };\n case ActionTypes.RESET_AUTHENTICATION_STATE:\n return omit(state, action.tokenServiceId);\n case ActionTypes.RECEIVE_INFO_RESPONSE:\n if (!action.tokenServiceId) return state;\n if (state[action.tokenServiceId].success) return state;\n\n return {\n ...state,\n [action.tokenServiceId]: {\n ...state[action.tokenServiceId],\n success: true,\n },\n };\n default:\n return state;\n }\n}\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isError': require('../isError'),\n 'isFunction': require('../isFunction'),\n 'isWeakMap': require('../isWeakMap'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n","var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","var convert = require('./convert'),\n func = convert('set', require('../set'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('update', require('../update'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","import omit from 'lodash/omit';\nimport set from 'lodash/fp/set';\nimport update from 'lodash/fp/update';\nimport ActionTypes from '../actions/action-types';\n\n/** */\nexport function companionWindowsReducer(state = {}, action) {\n switch (action.type) {\n case ActionTypes.ADD_COMPANION_WINDOW:\n return set([action.id], action.payload, state);\n\n case ActionTypes.ADD_WINDOW:\n return {\n ...state,\n ...(action.companionWindows || []).reduce((newState, cw) => {\n // eslint-disable-next-line no-param-reassign\n newState[cw.id] = {\n ...state[cw.id],\n ...cw,\n windowId: action.id,\n };\n return newState;\n }, {}),\n };\n\n case ActionTypes.REMOVE_WINDOW:\n return Object.keys(state).reduce((object, key) => {\n if (state[key].windowId !== action.windowId) {\n // eslint-disable-next-line no-param-reassign\n object[key] = state[key];\n }\n return object;\n }, {});\n\n case ActionTypes.UPDATE_COMPANION_WINDOW:\n return update([action.id], (orig) => ({ ...(orig || {}), ...action.payload }), state);\n\n case ActionTypes.REMOVE_COMPANION_WINDOW:\n return omit(state, action.id);\n\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return action.state.companionWindows || [];\n\n case ActionTypes.TOGGLE_TOC_NODE:\n return update([action.id, 'tocNodes'], (orig) => ({ ...(orig || {}), ...action.payload }), state);\n default:\n return state;\n }\n}\n","import without from 'lodash/without';\nimport ActionTypes from '../actions/action-types';\n\nconst defaultState = { items: [] };\n\n/**\n * errorsReducer\n */\nexport const errorsReducer = (state = defaultState, action) => {\n let ret;\n switch (action.type) {\n case ActionTypes.ADD_ERROR:\n return {\n ...state,\n [action.id]: { id: action.id, message: action.message },\n items: [...state.items, action.id],\n };\n case ActionTypes.RECEIVE_INFO_RESPONSE_FAILURE:\n return {\n ...state,\n [action.infoId]: {\n id: action.infoId,\n message: action.error,\n },\n items: [...state.items, action.infoId],\n };\n case ActionTypes.RECEIVE_SEARCH_FAILURE:\n return {\n ...state,\n [action.searchId]: {\n id: action.searchId,\n message: action.error,\n },\n items: [...state.items, action.searchId],\n };\n case ActionTypes.REMOVE_ERROR:\n ret = Object.keys(state).reduce((object, key) => {\n if (key !== action.id) {\n // eslint-disable-next-line no-param-reassign\n object[key] = state[key];\n }\n return object;\n }, {});\n ret.items = without(ret.items, action.id);\n return ret;\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return defaultState;\n default:\n return state;\n }\n};\n","import settings from '../../config/settings';\nimport ActionTypes from '../actions/action-types';\n\n/** Check if the viewport dimensions are fully specified */\nfunction hasViewportPosition(viewportPosition) {\n return (\n viewportPosition.x !== undefined &&\n viewportPosition.y !== undefined &&\n viewportPosition.width !== undefined &&\n viewportPosition.height !== undefined\n );\n}\n\n/** Check if the containee is fully within the bounds on the container */\nfunction contains(container, containee) {\n return (\n containee.x - containee.width / 2 > container.x - container.width / 2 &&\n containee.y - containee.height / 2 > container.y - container.height / 2 &&\n containee.x + containee.width / 2 < container.x + container.width / 2 &&\n containee.y + containee.height / 2 < container.y + container.height / 2\n );\n}\n\n/**\n * workspaceReducer\n */\nexport const workspaceReducer = (state = { ...settings.workspace, windowIds: [] }, action) => {\n let newWorkspaceDimensions;\n let viewportPosition;\n let newWindowIds;\n switch (action.type) {\n case ActionTypes.UPDATE_WORKSPACE:\n return {\n ...state,\n ...action.config,\n };\n case ActionTypes.FOCUS_WINDOW:\n return {\n ...state,\n focusedWindowId: action.windowId,\n viewportPosition: {\n ...state.viewportPosition,\n ...action.position,\n },\n };\n case ActionTypes.ADD_WINDOW:\n return {\n ...state,\n focusedWindowId: action.window.id,\n windowIds: [...(state.windowIds || []), action.window.id],\n };\n case ActionTypes.REMOVE_WINDOW:\n newWindowIds = (state.windowIds || []).filter((v) => v !== action.windowId);\n\n return {\n ...state,\n focusedWindowId:\n action.windowId === state.focusedWindowId ? newWindowIds[newWindowIds.length - 1] : state.focusedWindowId,\n windowIds: newWindowIds,\n };\n case ActionTypes.SET_WORKSPACE_FULLSCREEN:\n return { ...state, isFullscreenEnabled: action.isFullscreenEnabled };\n case ActionTypes.TOGGLE_ZOOM_CONTROLS:\n return { ...state, showZoomControls: action.showZoomControls };\n case ActionTypes.UPDATE_WORKSPACE_MOSAIC_LAYOUT:\n return { ...state, layout: action.layout };\n case ActionTypes.SET_WORKSPACE_ADD_VISIBILITY:\n return { ...state, isWorkspaceAddVisible: action.isWorkspaceAddVisible };\n case ActionTypes.SET_WORKSPACE_VIEWPORT_POSITION:\n newWorkspaceDimensions = {};\n\n viewportPosition = {\n ...state.viewportPosition,\n ...action.payload.position,\n };\n\n if (\n hasViewportPosition(viewportPosition) &&\n !contains(\n {\n height: state.height,\n width: state.width,\n x: 0,\n y: 0,\n },\n viewportPosition,\n )\n ) {\n newWorkspaceDimensions = {\n height: state.height * 2,\n width: state.width * 2,\n };\n }\n\n return {\n ...state,\n ...newWorkspaceDimensions,\n viewportPosition,\n };\n case ActionTypes.SET_CONFIG:\n case ActionTypes.IMPORT_CONFIG:\n case ActionTypes.UPDATE_CONFIG:\n return { ...state, ...action.config.workspace };\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return action.state.workspace || {};\n case ActionTypes.TOGGLE_DRAGGING:\n return { ...state, draggingEnabled: !state.draggingEnabled };\n default:\n return state;\n }\n};\n","import update from 'lodash/fp/update';\nimport omit from 'lodash/omit';\nimport ActionTypes from '../actions/action-types';\n\n/**\n * windowsReducer\n */\n// eslint-disable-next-line complexity\nexport const windowsReducer = (state = {}, action) => {\n switch (action.type) {\n case ActionTypes.ADD_WINDOW:\n return { ...state, [action.window.id]: action.window };\n\n case ActionTypes.MAXIMIZE_WINDOW:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n maximized: true,\n },\n };\n case ActionTypes.MINIMIZE_WINDOW:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n maximized: false,\n },\n };\n\n case ActionTypes.UPDATE_WINDOW:\n if (!state[action.id]) return state;\n\n return update(\n [action.id],\n (orig) => ({\n ...(orig || {}),\n // drop explicit `undefined` values so they can't clobber existing keys on spread (#3930)\n ...Object.fromEntries(Object.entries(action.payload).filter(([, value]) => value !== undefined)),\n }),\n state,\n );\n\n case ActionTypes.REMOVE_WINDOW:\n return omit(state, [action.windowId]);\n case ActionTypes.TOGGLE_WINDOW_SIDE_BAR:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n sideBarOpen: !state[action.windowId].sideBarOpen,\n },\n };\n case ActionTypes.SET_WINDOW_VIEW_TYPE:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n view: action.viewType,\n },\n };\n case ActionTypes.UPDATE_WINDOW_POSITION:\n return {\n ...state,\n [action.payload.windowId]: {\n ...state[action.payload.windowId],\n x: action.payload.position.x,\n y: action.payload.position.y,\n },\n };\n case ActionTypes.SET_WINDOW_SIZE:\n return {\n ...state,\n [action.payload.windowId]: {\n ...state[action.payload.windowId],\n height: action.payload.size.height,\n width: action.payload.size.width,\n x: action.payload.size.x,\n y: action.payload.size.y,\n },\n };\n case ActionTypes.SET_CANVAS:\n if (!state[action.windowId]) return state;\n\n return update(\n [action.windowId],\n (orig) => ({\n ...(orig || {}),\n canvasId: action.canvasId,\n visibleCanvases: action.visibleCanvases || [],\n }),\n state,\n );\n case ActionTypes.ADD_COMPANION_WINDOW:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n companionWindowIds: state[action.windowId].companionWindowIds.concat([action.id]),\n ...(action.payload.position === 'left' ? { companionAreaOpen: true, sideBarPanel: action.payload.content } : {}),\n },\n };\n case ActionTypes.UPDATE_COMPANION_WINDOW:\n if (action.payload.position !== 'left') return state;\n\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n companionAreaOpen: true,\n },\n };\n case ActionTypes.REMOVE_COMPANION_WINDOW:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n companionWindowIds: state[action.windowId].companionWindowIds.filter((id) => id !== action.id),\n },\n };\n case ActionTypes.SELECT_ANNOTATION:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n selectedAnnotationId: action.annotationId,\n },\n };\n case ActionTypes.DESELECT_ANNOTATION: {\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n selectedAnnotationId: undefined,\n },\n };\n }\n case ActionTypes.HOVER_ANNOTATION:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n hoveredAnnotationIds: action.annotationIds,\n },\n };\n case ActionTypes.TOGGLE_ANNOTATION_DISPLAY:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n highlightAllAnnotations: !state[action.windowId].highlightAllAnnotations,\n },\n };\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return action.state.windows || [];\n case ActionTypes.REQUEST_SEARCH:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n suggestedSearches: undefined,\n },\n };\n case ActionTypes.SHOW_COLLECTION_DIALOG:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n collectionDialogOn: true,\n collectionManifestId: action.manifestId,\n dialogCollectionPath: action.dialogCollectionPath,\n },\n };\n case ActionTypes.HIDE_COLLECTION_DIALOG:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n collectionDialogOn: false,\n },\n };\n default:\n return state;\n }\n};\n","import omit from 'lodash/omit';\nimport ActionTypes from '../actions/action-types';\n\n/**\n * manifestsReducer\n */\nexport const manifestsReducer = (state = {}, action) => {\n switch (action.type) {\n case ActionTypes.REQUEST_MANIFEST:\n return {\n [action.manifestId]: {\n ...state[action.manifestId],\n ...action.properties,\n id: action.manifestId,\n },\n ...omit(state, action.manifestId),\n };\n case ActionTypes.RECEIVE_MANIFEST:\n return {\n ...state,\n [action.manifestId]: {\n ...state[action.manifestId],\n error: null, // Explicitly set the error to null in case this is a re-fetch\n id: action.manifestId,\n isFetching: false,\n json: action.manifestJson,\n },\n };\n case ActionTypes.RECEIVE_MANIFEST_FAILURE:\n return {\n ...state,\n [action.manifestId]: {\n ...state[action.manifestId],\n error: action.error,\n id: action.manifestId,\n isFetching: false,\n },\n };\n case ActionTypes.REMOVE_MANIFEST:\n return Object.keys(state).reduce((object, key) => {\n if (key !== action.manifestId) {\n // eslint-disable-next-line no-param-reassign\n object[key] = state[key];\n }\n return object;\n }, {});\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return action.state.manifests || {};\n default:\n return state;\n }\n};\n","import ActionTypes from '../actions/action-types';\n\n/**\n * infoResponsesReducer\n */\nexport const infoResponsesReducer = (state = {}, action) => {\n switch (action.type) {\n case ActionTypes.REQUEST_INFO_RESPONSE:\n return {\n ...state,\n [action.infoId]: {\n id: action.infoId,\n isFetching: true,\n },\n };\n case ActionTypes.RECEIVE_INFO_RESPONSE:\n return {\n ...state,\n [action.infoId]: {\n degraded: false,\n id: action.infoId,\n isFetching: false,\n json: action.infoJson,\n tokenServiceId: action.tokenServiceId,\n },\n };\n case ActionTypes.RECEIVE_DEGRADED_INFO_RESPONSE:\n return {\n ...state,\n [action.infoId]: {\n degraded: true,\n id: action.infoId,\n isFetching: false,\n json: action.infoJson,\n tokenServiceId: action.tokenServiceId,\n },\n };\n case ActionTypes.RECEIVE_INFO_RESPONSE_FAILURE:\n return {\n ...state,\n [action.infoId]: {\n error: action.error,\n id: action.infoId,\n isFetching: false,\n tokenServiceId: action.tokenServiceId,\n },\n };\n case ActionTypes.REMOVE_INFO_RESPONSE:\n return Object.keys(state).reduce((object, key) => {\n if (key !== action.infoId) {\n // eslint-disable-next-line no-param-reassign\n object[key] = state[key];\n }\n return object;\n }, {});\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return {};\n default:\n return state;\n }\n};\n","import deepmerge from 'deepmerge';\nimport settings from '../../config/settings';\nimport ActionTypes from '../actions/action-types';\n\nconst initialState = { ...settings };\n\n/** Overwrite arrays when deep merging */\nconst overwriteMerge = (destinationArray, sourceArray, options) => sourceArray;\n\n/**\n * configReducer - does a deep merge of the config\n */\nexport const configReducer = (state = initialState, action) => {\n switch (action.type) {\n case ActionTypes.UPDATE_CONFIG:\n case ActionTypes.IMPORT_CONFIG:\n return deepmerge(state, action.config, { arrayMerge: overwriteMerge });\n case ActionTypes.SET_CONFIG:\n return action.config;\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return {\n ...(action.state.config || {}),\n export: deepmerge(state.export || {}, action.state.config?.export || {}, {\n arrayMerge: overwriteMerge,\n }),\n requests: deepmerge(state.requests || {}, action.state.config?.requests || {}, {\n arrayMerge: overwriteMerge,\n }),\n theme: deepmerge(state.theme || {}, action.state.config?.theme || {}, {\n arrayMerge: overwriteMerge,\n }),\n themes: deepmerge(state.themes || {}, action.state.config?.themes || {}, {\n arrayMerge: overwriteMerge,\n }),\n };\n default:\n return state;\n }\n};\n","import set from 'lodash/fp/set';\nimport omit from 'lodash/omit';\nimport ActionTypes from '../actions/action-types';\n\n/**\n * viewersReducer\n */\nexport const viewersReducer = (state = {}, action) => {\n switch (action.type) {\n case ActionTypes.UPDATE_VIEWPORT:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n ...action.payload,\n },\n };\n case ActionTypes.ADD_WINDOW:\n if (!action.window.initialViewerConfig) return state;\n\n return {\n ...state,\n [action.window.id]: {\n ...state[action.window.id],\n ...action.window.initialViewerConfig,\n },\n };\n case ActionTypes.REMOVE_WINDOW:\n return omit(state, action.windowId);\n case ActionTypes.SET_WINDOW_VIEW_TYPE:\n return set([action.windowId], null, state);\n case ActionTypes.SET_CANVAS:\n if (!action.preserveViewport) {\n return set([action.windowId], null, state);\n }\n return state;\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return action.state.viewers || {};\n default:\n return state;\n }\n};\n","import ActionTypes from '../actions/action-types';\n\n/**\n * annotationReducer\n */\nexport const annotationsReducer = (state = {}, action) => {\n switch (action.type) {\n case ActionTypes.REQUEST_ANNOTATION:\n return {\n ...state,\n [action.targetId]: {\n ...state[action.targetId],\n [action.annotationId]: {\n id: action.annotationId,\n isFetching: true,\n },\n },\n };\n case ActionTypes.RECEIVE_ANNOTATION:\n return {\n ...state,\n [action.targetId]: {\n ...state[action.targetId],\n [action.annotationId]: {\n id: action.annotationId,\n isFetching: false,\n json: action.annotationJson,\n },\n },\n };\n case ActionTypes.RECEIVE_ANNOTATION_FAILURE:\n return {\n ...state,\n [action.targetId]: {\n ...state[action.targetId],\n [action.annotationId]: {\n error: action.error,\n id: action.annotationId,\n isFetching: false,\n },\n },\n };\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return {};\n default:\n return state;\n }\n};\n","import omit from 'lodash/omit';\nimport ActionTypes from '../actions/action-types';\n\n/**\n * authReducer\n */\nexport const authReducer = (state = {}, action) => {\n switch (action.type) {\n case ActionTypes.ADD_AUTHENTICATION_REQUEST:\n return {\n ...state,\n [action.id]: {\n id: action.id,\n isFetching: true,\n profile: action.profile,\n windowId: action.windowId,\n },\n };\n case ActionTypes.RESOLVE_AUTHENTICATION_REQUEST:\n return {\n ...state,\n [action.id]: {\n ...state[action.id],\n isFetching: false,\n ok: action.ok,\n },\n };\n case ActionTypes.RECEIVE_ACCESS_TOKEN:\n if (!action.authId) return state;\n\n return {\n ...state,\n [action.authId]: {\n ...state[action.authId],\n ok: true,\n },\n };\n case ActionTypes.RESET_AUTHENTICATION_STATE:\n return omit(state, action.id);\n default:\n return state;\n }\n};\n","import update from 'lodash/fp/update';\nimport omit from 'lodash/omit';\nimport ActionTypes from '../actions/action-types';\n\n/**\n * elasticLayoutReducer\n */\nexport const elasticLayoutReducer = (state = {}, action) => {\n switch (action.type) {\n case ActionTypes.ADD_WINDOW:\n return {\n ...state,\n [action.window.id]: {\n windowId: action.window.id,\n ...action.elasticLayout,\n },\n };\n\n case ActionTypes.UPDATE_ELASTIC_WINDOW_LAYOUT:\n return update([action.windowId], (orig) => ({ ...(orig || {}), ...action.payload }), state);\n\n case ActionTypes.REMOVE_WINDOW:\n return omit(state, action.windowId);\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return action.state.elasticLayout || {};\n default:\n return state;\n }\n};\n","import omit from 'lodash/omit';\nimport ActionTypes from '../actions/action-types';\n\n/**\n * searchReducer\n */\nexport const searchesReducer = (state = {}, action) => {\n const searchStruct = (state[action.windowId] || {})[action.companionWindowId] || {};\n switch (action.type) {\n case ActionTypes.REQUEST_SEARCH:\n if (searchStruct.query !== action.query) {\n // new query\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n [action.companionWindowId]: {\n ...searchStruct,\n data: {\n [action.searchId]: {\n isFetching: true,\n },\n },\n query: action.query,\n selectedContentSearchAnnotation: [],\n },\n },\n };\n }\n\n // paginating through a query\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n [action.companionWindowId]: {\n ...searchStruct,\n data: {\n ...searchStruct.data,\n [action.searchId]: {\n isFetching: true,\n },\n },\n },\n },\n };\n case ActionTypes.RECEIVE_SEARCH:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n [action.companionWindowId]: {\n ...searchStruct,\n data: {\n ...searchStruct.data,\n [action.searchId]: {\n isFetching: false,\n json: action.searchJson,\n },\n },\n },\n },\n };\n case ActionTypes.RECEIVE_SEARCH_FAILURE:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n [action.companionWindowId]: {\n ...searchStruct,\n data: {\n ...searchStruct.data,\n [action.searchId]: {\n error: action.error,\n isFetching: false,\n },\n },\n },\n },\n };\n case ActionTypes.REMOVE_SEARCH:\n return {\n ...state,\n [action.windowId]: Object.keys(state[action.windowId]).reduce((object, key) => {\n if (key !== action.companionWindowId) {\n // eslint-disable-next-line no-param-reassign\n object[key] = state[action.windowId][key];\n }\n return object;\n }, {}),\n };\n case ActionTypes.SET_CONTENT_SEARCH_CURRENT_ANNOTATIONS:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n [action.companionWindowId]: {\n ...searchStruct,\n selectedContentSearchAnnotationIds: action.annotationIds,\n },\n },\n };\n case ActionTypes.SELECT_ANNOTATION:\n if (!state[action.windowId]) return state;\n\n return {\n ...state,\n [action.windowId]: Object.keys(state[action.windowId]).reduce((object, key) => {\n const search = state[action.windowId][key];\n const searchHasAnnotation =\n search.data &&\n Object.values(search.data)\n .filter((resp) => resp.json && resp.json.resources)\n .some((resp) => [resp.json.resources].flat().some((r) => r['@id'] === action.annotationId));\n\n if (searchHasAnnotation) {\n // eslint-disable-next-line no-param-reassign\n object[key] = {\n ...search,\n selectedContentSearchAnnotationIds: [action.annotationId],\n };\n } else {\n // eslint-disable-next-line no-param-reassign\n object[key] = search;\n }\n return object;\n }, {}),\n };\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return {};\n case ActionTypes.REMOVE_WINDOW:\n return omit(state, action.windowId);\n case ActionTypes.REMOVE_COMPANION_WINDOW:\n if (!state[action.windowId]) return state;\n\n return {\n ...state,\n [action.windowId]: {\n ...omit(state[action.windowId], action.id),\n },\n };\n default:\n return state;\n }\n};\n","import omit from 'lodash/omit';\nimport deepmerge from 'deepmerge';\nimport ActionTypes from '../actions/action-types';\n\n/**\n * configReducer - does a deep merge of the config\n */\nexport const layersReducer = (state = {}, action) => {\n switch (action.type) {\n case ActionTypes.UPDATE_LAYERS:\n return {\n ...state,\n [action.windowId]: {\n ...state[action.windowId],\n [action.canvasId]: deepmerge((state[action.windowId] || {})[action.canvasId] || {}, action.payload),\n },\n };\n case ActionTypes.REMOVE_WINDOW:\n return omit(state, [action.windowId]);\n default:\n return state;\n }\n};\n","import ActionTypes from '../actions/action-types';\n\n/**\n * catalogReducer\n */\nexport const catalogReducer = (state = [], action) => {\n switch (action.type) {\n case ActionTypes.ADD_RESOURCE:\n if (state.some((m) => m.manifestId === action.manifestId)) return state;\n\n return [{ manifestId: action.manifestId, ...action.payload }, ...state];\n case ActionTypes.ADD_WINDOW:\n if (state.some((m) => m.manifestId === action.window.manifestId)) return state;\n\n return [{ manifestId: action.window.manifestId }, ...state];\n case ActionTypes.UPDATE_WINDOW:\n if (!action.payload.manifestId) return state;\n if (state.some((m) => m.manifestId === action.payload.manifestId)) return state;\n\n return [{ manifestId: action.payload.manifestId }, ...state];\n case ActionTypes.REMOVE_RESOURCE:\n return state.filter((r) => r.manifestId !== action.manifestId);\n case ActionTypes.IMPORT_CONFIG:\n return action.config.catalog || [];\n case ActionTypes.IMPORT_MIRADOR_STATE:\n return action.state.catalog || [];\n default:\n return state;\n }\n};\n","export * from './accessTokens';\nexport * from './companionWindows';\nexport * from './errors';\nexport * from './workspace';\nexport * from './windows';\nexport * from './manifests';\nexport * from './infoResponses';\nexport * from './config';\nexport * from './viewers';\nexport * from './annotations';\nexport * from './auth';\nexport * from './elasticLayout';\nexport * from './search';\nexport * from './layers';\nexport * from './catalog';\n","import { combineReducers } from 'redux';\nimport {\n accessTokensReducer,\n authReducer,\n companionWindowsReducer,\n configReducer,\n elasticLayoutReducer,\n errorsReducer,\n infoResponsesReducer,\n manifestsReducer,\n viewersReducer,\n windowsReducer,\n workspaceReducer,\n annotationsReducer,\n searchesReducer,\n layersReducer,\n catalogReducer,\n} from '.';\n\n/**\n * Function to create root reducer\n * from plugin reducers.\n * @namespace CreateRootReducer\n */\nexport default function createRootReducer(pluginReducers) {\n return combineReducers({\n accessTokens: accessTokensReducer,\n annotations: annotationsReducer,\n auth: authReducer,\n catalog: catalogReducer,\n companionWindows: companionWindowsReducer,\n config: configReducer,\n elasticLayout: elasticLayoutReducer,\n errors: errorsReducer,\n infoResponses: infoResponsesReducer,\n layers: layersReducer,\n manifests: manifestsReducer,\n searches: searchesReducer,\n viewers: viewersReducer,\n windows: windowsReducer,\n workspace: workspaceReducer,\n ...pluginReducers,\n });\n}\n","import { m as makeIterator, E as take, H as fork, I as cancel, K as call, L as delay, M as actionChannel, N as sliding, O as race } from '../../dist/io-dec07f91.esm.js';\nexport { M as actionChannel, X as all, Y as apply, K as call, I as cancel, a1 as cancelled, Z as cps, L as delay, Q as effectTypes, a2 as flush, H as fork, a3 as getContext, $ as join, V as put, W as putResolve, O as race, a0 as select, a4 as setContext, _ as spawn, E as take, U as takeMaybe } from '../../dist/io-dec07f91.esm.js';\nimport * as is from '@redux-saga/is';\nimport '@babel/runtime/helpers/extends';\nimport '@redux-saga/symbols';\nimport '@redux-saga/delay-p';\n\nvar done = function done(value) {\n return {\n done: true,\n value: value\n };\n};\nvar qEnd = {};\nfunction safeName(patternOrChannel) {\n if (is.channel(patternOrChannel)) {\n return 'channel';\n }\n if (is.stringableFunc(patternOrChannel)) {\n return String(patternOrChannel);\n }\n if (is.func(patternOrChannel)) {\n return patternOrChannel.name;\n }\n return String(patternOrChannel);\n}\nfunction fsmIterator(fsm, startState, name) {\n var stateUpdater,\n errorState,\n effect,\n nextState = startState;\n function next(arg, error) {\n if (nextState === qEnd) {\n return done(arg);\n }\n if (error && !errorState) {\n nextState = qEnd;\n throw error;\n } else {\n stateUpdater && stateUpdater(arg);\n var currentState = error ? fsm[errorState](error) : fsm[nextState]();\n nextState = currentState.nextState;\n effect = currentState.effect;\n stateUpdater = currentState.stateUpdater;\n errorState = currentState.errorState;\n return nextState === qEnd ? done(arg) : effect;\n }\n }\n return makeIterator(next, function (error) {\n return next(null, error);\n }, name);\n}\n\nfunction takeEvery$1(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n var action,\n setAction = function setAction(ac) {\n return action = ac;\n };\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q1',\n effect: yFork(action)\n };\n }\n }, 'q1', \"takeEvery(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeLatest$1(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n var yCancel = function yCancel(task) {\n return {\n done: false,\n value: cancel(task)\n };\n };\n var task, action;\n var setTask = function setTask(t) {\n return task = t;\n };\n var setAction = function setAction(ac) {\n return action = ac;\n };\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return task ? {\n nextState: 'q3',\n effect: yCancel(task)\n } : {\n nextState: 'q1',\n effect: yFork(action),\n stateUpdater: setTask\n };\n },\n q3: function q3() {\n return {\n nextState: 'q1',\n effect: yFork(action),\n stateUpdater: setTask\n };\n }\n }, 'q1', \"takeLatest(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeLeading$1(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n var yCall = function yCall(ac) {\n return {\n done: false,\n value: call.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n var action;\n var setAction = function setAction(ac) {\n return action = ac;\n };\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q1',\n effect: yCall(action)\n };\n }\n }, 'q1', \"takeLeading(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction throttle$1(delayLength, patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n var action, channel;\n var yTake = function yTake() {\n return {\n done: false,\n value: take(channel)\n };\n };\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n var yDelay = {\n done: false,\n value: delay(delayLength)\n };\n var setAction = function setAction(ac) {\n return action = ac;\n };\n var setChannel = function setChannel(ch) {\n return channel = ch;\n };\n var needsChannel = !is.channel(patternOrChannel);\n if (!needsChannel) {\n setChannel(patternOrChannel);\n }\n return fsmIterator({\n q1: function q1() {\n var yActionChannel = {\n done: false,\n value: actionChannel(patternOrChannel, sliding(1))\n };\n return {\n nextState: 'q2',\n effect: yActionChannel,\n stateUpdater: setChannel\n };\n },\n q2: function q2() {\n return {\n nextState: 'q3',\n effect: yTake(),\n stateUpdater: setAction\n };\n },\n q3: function q3() {\n return {\n nextState: 'q4',\n effect: yFork(action)\n };\n },\n q4: function q4() {\n return {\n nextState: 'q2',\n effect: yDelay\n };\n }\n }, needsChannel ? 'q1' : 'q2', \"throttle(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction retry$1(maxTries, delayLength, fn) {\n var counter = maxTries;\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n var yCall = {\n done: false,\n value: call.apply(void 0, [fn].concat(args))\n };\n var yDelay = {\n done: false,\n value: delay(delayLength)\n };\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yCall,\n errorState: 'q10'\n };\n },\n q2: function q2() {\n return {\n nextState: qEnd\n };\n },\n q10: function q10(error) {\n counter -= 1;\n if (counter <= 0) {\n throw error;\n }\n return {\n nextState: 'q1',\n effect: yDelay\n };\n }\n }, 'q1', \"retry(\" + fn.name + \")\");\n}\n\nfunction debounceHelper(delayLength, patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n var action, raceOutput;\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n var yRace = {\n done: false,\n value: race({\n action: take(patternOrChannel),\n debounce: delay(delayLength)\n })\n };\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(void 0, [worker].concat(args, [ac]))\n };\n };\n var yNoop = function yNoop(value) {\n return {\n done: false,\n value: value\n };\n };\n var setAction = function setAction(ac) {\n return action = ac;\n };\n var setRaceOutput = function setRaceOutput(ro) {\n return raceOutput = ro;\n };\n return fsmIterator({\n q1: function q1() {\n return {\n nextState: 'q2',\n effect: yTake,\n stateUpdater: setAction\n };\n },\n q2: function q2() {\n return {\n nextState: 'q3',\n effect: yRace,\n stateUpdater: setRaceOutput\n };\n },\n q3: function q3() {\n return raceOutput.debounce ? {\n nextState: 'q1',\n effect: yFork(action)\n } : {\n nextState: 'q2',\n effect: yNoop(raceOutput.action),\n stateUpdater: setAction\n };\n }\n }, 'q1', \"debounce(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeEvery(patternOrChannel, worker) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return fork.apply(void 0, [takeEvery$1, patternOrChannel, worker].concat(args));\n}\nfunction takeLatest(patternOrChannel, worker) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n return fork.apply(void 0, [takeLatest$1, patternOrChannel, worker].concat(args));\n}\nfunction takeLeading(patternOrChannel, worker) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n return fork.apply(void 0, [takeLeading$1, patternOrChannel, worker].concat(args));\n}\nfunction throttle(ms, patternOrChannel, worker) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 3 ? _len4 - 3 : 0), _key4 = 3; _key4 < _len4; _key4++) {\n args[_key4 - 3] = arguments[_key4];\n }\n return fork.apply(void 0, [throttle$1, ms, patternOrChannel, worker].concat(args));\n}\nfunction retry(maxTries, delayLength, worker) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {\n args[_key5 - 3] = arguments[_key5];\n }\n return call.apply(void 0, [retry$1, maxTries, delayLength, worker].concat(args));\n}\nfunction debounce(delayLength, pattern, worker) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {\n args[_key6 - 3] = arguments[_key6];\n }\n return fork.apply(void 0, [debounceHelper, delayLength, pattern, worker].concat(args));\n}\n\nexport { debounce, retry, takeEvery, takeLatest, takeLeading, throttle };\n","import { all, call, put, select, takeEvery } from 'redux-saga/effects';\nimport { Utils } from 'manifesto.js';\nimport normalizeUrl from 'normalize-url';\nimport ActionTypes from '../actions/action-types';\nimport {\n receiveManifest,\n receiveManifestFailure,\n receiveInfoResponse,\n receiveInfoResponseFailure,\n receiveDegradedInfoResponse,\n receiveSearch,\n receiveSearchFailure,\n receiveAnnotation,\n receiveAnnotationFailure,\n} from '../actions';\nimport { getManifests, getRequestsConfig, getAccessTokens, selectInfoResponse } from '../selectors';\n\n/** */\nfunction fetchWrapper(url, options, { success, degraded, failure }) {\n return fetch(url, options)\n .then((response) =>\n response\n .json()\n .then((json) => {\n if (response.status === 401) return (degraded || success)({ json, response });\n if (response.ok) return success({ json, response });\n return failure({ error: response.statusText, json, response });\n })\n .catch((error) => {\n // Error responses (4xx/5xx) often have a body that isn't valid JSON\n // only surface the raw parse error when the response was otherwise ok,\n // where it points to an actual unexpected JSON body bug.\n if (!response.ok) {\n return failure({ error: `${response.status} ${response.statusText}: ${url}`, response });\n }\n return failure({ error, response });\n }),\n )\n .catch((error) => failure({ error }));\n}\n\n/** */\nfunction* fetchIiifResource(url, options, { success, degraded, failure }) {\n const { preprocessors = [], postprocessors = [] } = yield select(getRequestsConfig);\n\n try {\n const reqOptions = preprocessors.reduce((acc, f) => f(url, acc) || acc, options);\n\n let action = yield call(fetchWrapper, url, reqOptions, { degraded, failure, success });\n action = postprocessors.reduce((acc, f) => f(url, acc) || acc, action);\n return action;\n } catch (error) {\n return failure({ error });\n }\n}\n\n/** */\nfunction* fetchIiifResourceWithAuth(url, iiifResource, options, { degraded, failure, success }) {\n const urlOptions = { ...options };\n let tokenServiceId;\n\n // If we have a requested IIIF resource (say, the image description from the manifest)\n // we can optimistically try an appropriate access token.\n //\n // TODO: there might be multiple applicable access token services\n if (iiifResource) {\n const tokenService = yield call(getAccessTokenService, iiifResource);\n tokenServiceId = tokenService && tokenService.id;\n\n if (tokenService && tokenService.json) {\n urlOptions.headers = {\n Authorization: `Bearer ${tokenService.json.accessToken}`,\n ...options.headers,\n };\n }\n }\n\n const { error, json, response } = yield call(fetchIiifResource, url, urlOptions, {\n failure: (arg) => arg,\n success: (arg) => arg,\n });\n\n // Hard error either requesting the resource or deserializing the JSON.\n if (error) {\n yield put(\n failure({\n error,\n json,\n response,\n tokenServiceId,\n }),\n );\n return;\n }\n\n const id = json['@id'] || json.id;\n if (response.ok) {\n if (\n normalizeUrl(id, { stripAuthentication: false }) ===\n normalizeUrl(url.replace(/info\\.json$/, ''), { stripAuthentication: false })\n ) {\n yield put(success({ json, response, tokenServiceId }));\n return;\n }\n } else if (response.status !== 401) {\n yield put(\n failure({\n error,\n json,\n response,\n tokenServiceId,\n }),\n );\n\n return;\n }\n\n // Start attempting some IIIF Auth;\n // First, the IIIF resource we were given may not be authoritative; check if\n // it suggests a different access token service and re-enter the auth workflow\n const authoritativeTokenService = yield call(getAccessTokenService, json);\n if (authoritativeTokenService && authoritativeTokenService.id !== tokenServiceId) {\n yield call(fetchIiifResourceWithAuth, url, json, options, { degraded, failure, success });\n return;\n }\n\n // Record the response (potentially kicking off other auth flows)\n yield put((degraded || success)({ json, response, tokenServiceId }));\n}\n\n/** */\nexport function* fetchManifest({ manifestId }) {\n const callbacks = {\n failure: ({ error, json, response }) => receiveManifestFailure(manifestId, typeof error === 'object' ? String(error) : error),\n success: ({ json, response }) => receiveManifest(manifestId, json),\n };\n const dispatch = yield call(fetchIiifResource, manifestId, {}, callbacks);\n yield put(dispatch);\n}\n\n/** @private */\nfunction* getAccessTokenService(resource) {\n const manifestoCompatibleResource = resource && resource.__jsonld ? resource : { ...resource, options: {} };\n const services = Utils.getServices(manifestoCompatibleResource).filter((s) =>\n s.getProfile().match(/http:\\/\\/iiif.io\\/api\\/auth\\//),\n );\n if (services.length === 0) return undefined;\n\n const accessTokens = yield select(getAccessTokens);\n if (!accessTokens) return undefined;\n\n for (let i = 0; i < services.length; i += 1) {\n const authService = services[i];\n const accessTokenService =\n Utils.getService(authService, 'http://iiif.io/api/auth/1/token') ||\n Utils.getService(authService, 'http://iiif.io/api/auth/0/token');\n const token = accessTokenService && accessTokens[accessTokenService.id];\n if (token && token.json) return token;\n }\n\n return undefined;\n}\n\n/** @private */\nexport function* fetchInfoResponse({ imageResource, infoId, windowId }) {\n let iiifResource = imageResource;\n if (!iiifResource) {\n iiifResource = yield select(selectInfoResponse, { infoId });\n }\n\n const callbacks = {\n degraded: ({ json, response, tokenServiceId }) =>\n receiveDegradedInfoResponse(infoId, json, response.ok, tokenServiceId, windowId),\n failure: ({ error, json, response, tokenServiceId }) => receiveInfoResponseFailure(infoId, error, tokenServiceId),\n success: ({ json, response, tokenServiceId }) => receiveInfoResponse(infoId, json, response.ok, tokenServiceId),\n };\n\n yield call(fetchIiifResourceWithAuth, `${infoId.replace(/\\/$/, '')}/info.json`, iiifResource, {}, callbacks);\n}\n\n/** @private */\nexport function* fetchSearchResponse({ windowId, companionWindowId, query, searchId }) {\n const callbacks = {\n failure: ({ error, json, response }) => receiveSearchFailure(windowId, companionWindowId, searchId, error),\n success: ({ json, response }) => receiveSearch(windowId, companionWindowId, searchId, json),\n };\n const dispatch = yield call(fetchIiifResource, searchId, {}, callbacks);\n yield put(dispatch);\n}\n\n/** @private */\nexport function* fetchAnnotation({ targetId, annotationId }) {\n const callbacks = {\n failure: ({ error, json, response }) => receiveAnnotationFailure(targetId, annotationId, error),\n success: ({ json, response }) => receiveAnnotation(targetId, annotationId, json),\n };\n const dispatch = yield call(fetchIiifResource, annotationId, {}, callbacks);\n yield put(dispatch);\n}\n\n/** */\nexport function* fetchResourceManifest({ manifestId, manifestJson }) {\n if (manifestJson) {\n yield put(receiveManifest(manifestId, manifestJson));\n return;\n }\n\n if (!manifestId) return;\n\n const manifests = yield select(getManifests) || {};\n if (!manifests[manifestId]) yield* fetchManifest({ manifestId });\n}\n\n/** */\nexport function* fetchManifests(...manifestIds) {\n const manifests = yield select(getManifests);\n\n for (let i = 0; i < manifestIds.length; i += 1) {\n const manifestId = manifestIds[i];\n if (!manifests[manifestId]) yield call(fetchManifest, { manifestId });\n }\n}\n\n/** */\nexport default function* iiifSaga() {\n yield all([\n takeEvery(ActionTypes.REQUEST_MANIFEST, fetchManifest),\n takeEvery(ActionTypes.REQUEST_INFO_RESPONSE, fetchInfoResponse),\n takeEvery(ActionTypes.REQUEST_SEARCH, fetchSearchResponse),\n takeEvery(ActionTypes.REQUEST_ANNOTATION, fetchAnnotation),\n takeEvery(ActionTypes.ADD_RESOURCE, fetchResourceManifest),\n ]);\n}\n","import { all, call, put, select, takeEvery } from 'redux-saga/effects';\nimport ActionTypes from '../actions/action-types';\nimport {\n setContentSearchCurrentAnnotation,\n selectAnnotation,\n setWorkspaceViewportPosition,\n updateWindow,\n setCanvas,\n fetchSearch,\n receiveManifest,\n fetchInfoResponse,\n showCollectionDialog,\n} from '../actions';\nimport {\n getSearchForWindow,\n getSearchAnnotationsForCompanionWindow,\n getCanvasGrouping,\n getWindow,\n getManifestoInstance,\n getCompanionWindowIdsForPosition,\n getManifestSearchService,\n getCanvasForAnnotation,\n getSelectedContentSearchAnnotationIds,\n getSortedSearchAnnotationsForCompanionWindow,\n getVisibleCanvasIds,\n getWorkspace,\n getElasticLayout,\n getCanvases,\n selectInfoResponses,\n getWindowConfig,\n getMiradorCanvasWrapper,\n getMiradorManifestWrapper,\n} from '../selectors';\nimport { fetchManifests } from './iiif';\nimport { getIiifResourceImageService } from '../../lib/iiif';\n\n/** */\nexport function* fetchWindowManifest(action) {\n const { collectionPath, id, manifestId } = action.payload || action.window;\n\n if (!manifestId) return;\n\n if (action.manifest) {\n yield put(receiveManifest(manifestId, action.manifest));\n } else {\n yield call(fetchManifests, manifestId, ...(collectionPath || []));\n }\n\n yield call(setWindowStartingCanvas, action);\n yield call(setWindowDefaultSearchQuery, action);\n if (!collectionPath) {\n yield call(setCollectionPath, { manifestId, windowId: action.id || action.window.id });\n }\n yield call(determineAndShowCollectionDialog, manifestId, id);\n}\n\n/** */\nexport function* setCanvasOnNewSequence(action) {\n const windowId = action.id;\n if (!action || !action.payload || !action.payload.sequenceId) return;\n\n const canvases = yield select(getCanvases, { windowId });\n if (!canvases || !canvases[0] || !canvases[0].id) return;\n\n const thunk = yield call(setCanvas, windowId, canvases[0].id);\n yield put(thunk);\n}\n\n/** */\nexport function* setCollectionPath({ manifestId, windowId }) {\n const manifestoInstance = yield select(getManifestoInstance, { manifestId });\n\n if (manifestoInstance) {\n const partOfs = manifestoInstance.getProperty('partOf');\n const partOf = Array.isArray(partOfs) ? partOfs[0] : partOfs;\n\n if (partOf && partOf.id) {\n yield put(updateWindow(windowId, { collectionPath: [partOf.id] }));\n }\n }\n}\n\n/** */\nexport function* fetchCollectionManifests(action) {\n const { collectionPath } = action.payload;\n if (!collectionPath) return;\n\n yield call(fetchManifests, ...collectionPath);\n}\n\n/** @private */\nexport function* setWindowStartingCanvas(action) {\n const { canvasId, canvasIndex, manifestId } = action.payload || action.window;\n\n const windowId = action.id || action.window.id;\n\n if (canvasId) {\n // Preserve viewport when initialViewerConfig exists, event if the preserveViewport OSD setting is set to false\n const preserveViewport = !!action.payload || !!action.window?.initialViewerConfig;\n // When canvasId is explicitly provided, always pass preserveViewport flag\n const thunk = yield call(setCanvas, windowId, canvasId, null, { preserveViewport });\n yield put(thunk);\n } else {\n const getMiradorManifest = yield select(getMiradorManifestWrapper);\n const manifestoInstance = yield select(getManifestoInstance, { manifestId });\n if (manifestoInstance) {\n // set the startCanvas\n const miradorManifest = getMiradorManifest(manifestoInstance);\n const startCanvas =\n miradorManifest.startCanvas || miradorManifest.canvasAt(canvasIndex || 0) || miradorManifest.canvasAt(0);\n if (startCanvas) {\n const preserveViewport = !!action.payload || !!action.window?.initialViewerConfig;\n // When canvas is calculated, only pass preserveViewport when true\n const thunk = preserveViewport\n ? yield call(setCanvas, windowId, startCanvas.id, null, { preserveViewport })\n : yield call(setCanvas, windowId, startCanvas.id);\n yield put(thunk);\n }\n }\n }\n}\n\n/** @private */\nexport function* setWindowDefaultSearchQuery(action) {\n // only for a brand new window\n if (!action.window || !action.window.defaultSearchQuery) return;\n\n const { id: windowId, defaultSearchQuery } = action.window;\n const searchService = yield select(getManifestSearchService, { windowId });\n const companionWindowIds = yield select(getCompanionWindowIdsForPosition, {\n position: 'left',\n windowId,\n });\n const companionWindowId = companionWindowIds[0];\n\n if (searchService && companionWindowId) {\n const searchId = searchService && `${searchService.id}?${new URLSearchParams({ q: defaultSearchQuery })}`;\n yield put(fetchSearch(windowId, companionWindowId, searchId, defaultSearchQuery));\n }\n}\n\n/** @private */\nexport function getAnnotationsBySearch(state, { canvasIds, companionWindowIds, windowId }) {\n const annotationBySearch = companionWindowIds.reduce((accumulator, companionWindowId) => {\n const annotations = getSearchAnnotationsForCompanionWindow(state, {\n companionWindowId,\n windowId,\n });\n\n const resourceAnnotations = annotations.resources;\n const hitAnnotation = resourceAnnotations.find((r) => canvasIds.includes(r.targetId));\n\n // eslint-disable-next-line no-param-reassign\n if (hitAnnotation) accumulator[companionWindowId] = [hitAnnotation.id];\n\n return accumulator;\n }, {});\n\n return annotationBySearch;\n}\n\n/** @private */\nexport function* setCurrentAnnotationsOnCurrentCanvas({ annotationId, windowId, visibleCanvases }) {\n const searches = yield select(getSearchForWindow, { windowId });\n const companionWindowIds = Object.keys(searches || {});\n if (companionWindowIds.length === 0) return;\n\n const annotationBySearch = yield select(getAnnotationsBySearch, {\n canvasIds: visibleCanvases,\n companionWindowIds,\n windowId,\n });\n\n yield all(\n Object.keys(annotationBySearch).map((companionWindowId) =>\n put(setContentSearchCurrentAnnotation(windowId, companionWindowId, annotationBySearch[companionWindowId])),\n ),\n );\n\n if (Object.values(annotationBySearch).length > 0) {\n // if the currently selected annotation isn't on this canvas, do a thing.\n yield put(selectAnnotation(windowId, Object.values(annotationBySearch)[0][0]));\n }\n}\n\n/** @private */\nexport function* panToFocusedWindow({ pan, windowId }) {\n if (!pan) return;\n const elasticLayout = yield select(getElasticLayout);\n const { x, y, width, height } = elasticLayout[windowId] || {};\n\n const {\n viewportPosition: { width: viewWidth, height: viewHeight },\n } = yield select(getWorkspace);\n\n yield put(\n setWorkspaceViewportPosition({\n x: x + width / 2 - viewWidth / 2,\n y: y + height / 2 - viewHeight / 2,\n }),\n );\n}\n\n/** @private */\nexport function* updateVisibleCanvases({ windowId }) {\n const { canvasId } = yield select(getWindow, { windowId });\n const visibleCanvases = yield select(getCanvasGrouping, { canvasId, windowId });\n yield put(updateWindow(windowId, { visibleCanvases: (visibleCanvases || []).map((c) => c.id) }));\n}\n\n/** @private */\nexport function* setCanvasOfFirstSearchResult({ companionWindowId, windowId }) {\n const { switchCanvasOnSearch } = yield select(getWindowConfig, { windowId });\n if (!switchCanvasOnSearch) {\n return;\n }\n const selectedIds = yield select(getSelectedContentSearchAnnotationIds, {\n companionWindowId,\n windowId,\n });\n\n if (selectedIds.length !== 0) return;\n\n const annotations = yield select(getSortedSearchAnnotationsForCompanionWindow, {\n companionWindowId,\n windowId,\n });\n if (!annotations || annotations.length === 0) return;\n\n yield put(selectAnnotation(windowId, annotations[0].id));\n}\n\n/** @private */\nexport function* setCanvasforSelectedAnnotation({ annotationId, windowId }) {\n const canvasIds = yield select(getVisibleCanvasIds, { windowId });\n const canvas = yield select(getCanvasForAnnotation, {\n annotationId,\n windowId,\n });\n\n if (!canvas || canvasIds.includes(canvas.id)) return;\n\n const thunk = yield call(setCanvas, windowId, canvas.id);\n yield put(thunk);\n}\n\n/** Fetch info responses for the visible canvases */\nexport function* fetchInfoResponses({ visibleCanvases: visibleCanvasIds, windowId }) {\n const canvases = yield select(getCanvases, { windowId });\n const infoResponses = yield select(selectInfoResponses);\n const visibleCanvases = (canvases || []).filter((c) => visibleCanvasIds.includes(c.id));\n const getMiradorCanvas = yield select(getMiradorCanvasWrapper);\n\n yield all(\n visibleCanvases.map((canvas) => {\n const miradorCanvas = getMiradorCanvas(canvas);\n return all(\n miradorCanvas.iiifImageResources\n .map(\n (imageResource) =>\n !infoResponses[getIiifResourceImageService(imageResource)?.id] &&\n put(fetchInfoResponse({ imageResource, windowId })),\n )\n .filter(Boolean),\n );\n }),\n );\n}\n\n/** */\nexport function* determineAndShowCollectionDialog(manifestId, windowId) {\n const manifestoInstance = yield select(getManifestoInstance, { manifestId });\n if (manifestoInstance && manifestoInstance.isCollection()) {\n yield put(showCollectionDialog(manifestId, [], windowId));\n }\n}\n\n/** */\nexport default function* windowsSaga() {\n yield all([\n takeEvery(ActionTypes.ADD_WINDOW, fetchWindowManifest),\n takeEvery(ActionTypes.UPDATE_WINDOW, fetchWindowManifest),\n takeEvery(ActionTypes.UPDATE_WINDOW, setCanvasOnNewSequence),\n takeEvery(ActionTypes.UPDATE_WINDOW, fetchCollectionManifests),\n takeEvery(ActionTypes.SET_CANVAS, setCurrentAnnotationsOnCurrentCanvas),\n takeEvery(ActionTypes.SET_CANVAS, fetchInfoResponses),\n takeEvery(ActionTypes.UPDATE_COMPANION_WINDOW, fetchCollectionManifests),\n takeEvery(ActionTypes.SET_WINDOW_VIEW_TYPE, updateVisibleCanvases),\n takeEvery(ActionTypes.RECEIVE_SEARCH, setCanvasOfFirstSearchResult),\n takeEvery(ActionTypes.SELECT_ANNOTATION, setCanvasforSelectedAnnotation),\n takeEvery(ActionTypes.FOCUS_WINDOW, panToFocusedWindow),\n ]);\n}\n","import { all, call, put, takeEvery } from 'redux-saga/effects';\nimport { v4 as uuid } from 'uuid';\nimport { fetchManifests } from './iiif';\nimport { fetchWindowManifest } from './windows';\nimport { addWindow } from '../actions';\nimport ActionTypes from '../actions/action-types';\n\n/** */\nexport function* importState(action) {\n yield all([\n ...Object.entries(action.state.windows || {}).map(([_, window]) =>\n call(fetchWindowManifest, { id: window.id, payload: window }),\n ),\n ...Object.entries(action.state.manifests || {})\n .filter(([_, manifest]) => !manifest.json)\n .map(([_, manifest]) => call(fetchManifests, manifest.id)),\n ]);\n}\n\n/** Add windows from the imported config */\nexport function* importConfig({ config: { thumbnailNavigation, windows } }) {\n if (!windows || windows.length === 0) return;\n\n const thunks = yield all(\n windows.map((miradorWindow) => {\n const windowId = `window-${uuid()}`;\n const manifestId = miradorWindow.manifestId || miradorWindow.loadedManifest;\n\n return call(addWindow, {\n // these are default values ...\n id: windowId,\n manifestId,\n thumbnailNavigationPosition: thumbnailNavigation && thumbnailNavigation.defaultPosition,\n // ... overridden by values from the window configuration ...\n ...miradorWindow,\n });\n }),\n );\n\n yield all(thunks.map((thunk) => put(thunk)));\n}\n\n/** */\nexport function* fetchCollectionManifests(action) {\n const { dialogCollectionPath, manifestId } = action;\n yield call(fetchManifests, manifestId, ...dialogCollectionPath);\n}\n\n/** */\nexport default function* appSaga() {\n yield all([\n takeEvery(ActionTypes.IMPORT_MIRADOR_STATE, importState),\n takeEvery(ActionTypes.IMPORT_CONFIG, importConfig),\n takeEvery(ActionTypes.SHOW_COLLECTION_DIALOG, fetchCollectionManifests),\n ]);\n}\n","import { all, put, select, takeEvery } from 'redux-saga/effects';\nimport { requestCanvasAnnotations, receiveAnnotation, requestAnnotation } from '../actions';\nimport { getAnnotations, getCanvas, getMiradorCanvasWrapper } from '../selectors';\nimport ActionTypes from '../actions/action-types';\nimport MiradorCanvas from '../../lib/MiradorCanvas';\n\n/** Fetch annotations for a given canvas */\nexport function* fetchCanvasAnnotations({ canvasId, windowId }) {\n const canvas = yield select(getCanvas, { canvasId, windowId });\n const annotations = yield select(getAnnotations);\n const getMiradorCanvas = yield select(getMiradorCanvasWrapper);\n const miradorCanvas = getMiradorCanvas(canvas);\n\n return yield all([\n // IIIF v2\n ...miradorCanvas.annotationListUris\n .filter((uri) => !(annotations[canvas.id] && annotations[canvas.id][uri]))\n .map((uri) => put(requestAnnotation(canvas.id, uri))),\n // IIIF v3\n ...miradorCanvas.canvasAnnotationPages\n .filter((annotation) => !(annotations[canvas.id] && annotations[canvas.id][annotation.id]))\n .map((annotation) => {\n // If there are no items, try to retrieve the referenced resource.\n // otherwise the resource should be embedded and just add to the store.\n if (!annotation.items) {\n return put(requestAnnotation(canvas.id, annotation.id));\n }\n\n return put(receiveAnnotation(canvas.id, annotation.id, annotation));\n }),\n ]);\n}\n\n/**\n * Fetch annotations for the visible canvases.\n */\nexport function* fetchAnnotations({ visibleCanvases = [], windowId }) {\n // this little indirection allows plugins to also handle the request\n return yield all(visibleCanvases.map((canvasId) => put(requestCanvasAnnotations(windowId, canvasId))));\n}\n\n/** */\nexport default function* appSaga() {\n yield all([\n takeEvery(ActionTypes.REQUEST_CANVAS_ANNOTATIONS, fetchCanvasAnnotations),\n takeEvery(ActionTypes.SET_CANVAS, fetchAnnotations),\n ]);\n}\n","import { all, call, put, select, takeEvery, delay } from 'redux-saga/effects';\nimport { Utils } from 'manifesto.js';\nimport ActionTypes from '../actions/action-types';\nimport { addAuthenticationRequest, resolveAuthenticationRequest, requestAccessToken, resetAuthenticationState } from '../actions';\nimport {\n selectInfoResponses,\n getVisibleCanvases,\n getWindows,\n getConfig,\n getAuth,\n getAccessTokens,\n getMiradorCanvasWrapper,\n} from '../selectors';\nimport { fetchInfoResponse } from './iiif';\n\n/** */\nexport function* refetchInfoResponsesOnLogout({ tokenServiceId }) {\n // delay logout actions to give the cookie service a chance to invalidate our cookies\n // before we reinitialize openseadragon and rerequest images.\n\n yield delay(2000);\n yield call(refetchInfoResponses, { serviceId: tokenServiceId });\n}\n\n/**\n * Figure out what info responses could have used the access token service and:\n * - refetch, if they are currently visible\n * - throw them out (and lazy re-fetch) otherwise\n */\nexport function* refetchInfoResponses({ serviceId }) {\n const windows = yield select(getWindows);\n\n const canvases = yield all(Object.keys(windows).map((windowId) => select(getVisibleCanvases, { windowId })));\n\n const getMiradorCanvas = yield select(getMiradorCanvasWrapper);\n\n const visibleImageApiIds = canvases.flat().flatMap((canvas) => getMiradorCanvas(canvas).imageServiceIds);\n\n const infoResponses = yield select(selectInfoResponses);\n /** */\n const haveThisTokenService = (infoResponse) => {\n const services = Utils.getServices(infoResponse);\n return services.some((e) => {\n const infoTokenService =\n Utils.getService(e, 'http://iiif.io/api/auth/1/token') || Utils.getService(e, 'http://iiif.io/api/auth/0/token');\n return infoTokenService && infoTokenService.id === serviceId;\n });\n };\n\n const obsoleteInfoResponses = Object.values(infoResponses).filter((i) => i.json && haveThisTokenService(i.json));\n\n yield all(\n obsoleteInfoResponses.map(({ id: infoId }) => {\n if (visibleImageApiIds.includes(infoId)) {\n return call(fetchInfoResponse, { infoId });\n }\n return put({ infoId, type: ActionTypes.REMOVE_INFO_RESPONSE });\n }),\n );\n}\n\n/** try to start any non-interactive auth flows */\nexport function* doAuthWorkflow({ infoJson, windowId }) {\n const auths = yield select(getAuth);\n const { auth: { serviceProfiles = [] } = {} } = yield select(getConfig);\n const nonInteractiveAuthFlowProfiles = serviceProfiles.filter((p) => p.external || p.kiosk);\n\n // try to get an untried, non-interactive auth service\n const authService = Utils.getServices(infoJson)\n .filter((s) => !auths[s.id])\n .find((e) => nonInteractiveAuthFlowProfiles.some((p) => p.profile === e.getProfile()));\n if (!authService) return;\n\n const profileConfig = nonInteractiveAuthFlowProfiles.find((p) => p.profile === authService.getProfile());\n\n if (profileConfig.kiosk) {\n // start the auth\n yield put(addAuthenticationRequest(windowId, authService.id, authService.getProfile()));\n } else if (profileConfig.external) {\n const tokenService =\n Utils.getService(authService, 'http://iiif.io/api/auth/1/token') ||\n Utils.getService(authService, 'http://iiif.io/api/auth/0/token');\n\n if (!tokenService) return;\n // start the auth\n yield put(addAuthenticationRequest(windowId, authService.id, authService.getProfile()));\n // resolve the auth\n yield put(resolveAuthenticationRequest(authService.id, tokenService.id, { ok: true }));\n // start access tokens\n yield put(requestAccessToken(tokenService.id, authService.id));\n }\n}\n\n/** */\nexport function* rerequestOnAccessTokenFailure({ infoJson, windowId, tokenServiceId }) {\n if (!tokenServiceId) return;\n\n // make sure we have an auth service to try\n const authService = Utils.getServices(infoJson).find((service) => {\n const tokenService =\n Utils.getService(service, 'http://iiif.io/api/auth/1/token') ||\n Utils.getService(service, 'http://iiif.io/api/auth/0/token');\n\n return tokenService && tokenService.id === tokenServiceId;\n });\n\n if (!authService) return;\n\n // make sure the token ever worked (and might have expired or needs to be re-upped)\n const accessTokenServices = yield select(getAccessTokens);\n const service = accessTokenServices[tokenServiceId];\n if (!(service && service.success)) return;\n\n yield put(requestAccessToken(tokenServiceId, authService.id));\n}\n\n/** */\nexport function* invalidateInvalidAuth({ serviceId }) {\n const accessTokenServices = yield select(getAccessTokens);\n const authServices = yield select(getAuth);\n\n const accessTokenService = accessTokenServices[serviceId];\n if (!accessTokenService) return;\n const authService = authServices[accessTokenService.authId];\n if (!authService) return;\n\n if (accessTokenService.success) {\n // if the token ever worked, reset things so we try to get a new cookie\n yield put(\n resetAuthenticationState({\n authServiceId: authService.id,\n tokenServiceId: accessTokenService.id,\n }),\n );\n } else {\n // if the token never worked, mark the auth service as bad so we could\n // try to pick a different service\n yield put(resolveAuthenticationRequest(authService.id, accessTokenService.id, { ok: false }));\n }\n}\n\n/** */\nexport default function* authSaga() {\n yield all([\n takeEvery(ActionTypes.RECEIVE_DEGRADED_INFO_RESPONSE, rerequestOnAccessTokenFailure),\n takeEvery(ActionTypes.RECEIVE_ACCESS_TOKEN_FAILURE, invalidateInvalidAuth),\n takeEvery(ActionTypes.RECEIVE_DEGRADED_INFO_RESPONSE, doAuthWorkflow),\n takeEvery(ActionTypes.RECEIVE_ACCESS_TOKEN, refetchInfoResponses),\n takeEvery(ActionTypes.RESET_AUTHENTICATION_STATE, refetchInfoResponsesOnLogout),\n ]);\n}\n","import { all, call, spawn } from 'redux-saga/effects';\n\nimport appSaga from './app';\nimport iiifSaga from './iiif';\nimport windowSaga from './windows';\nimport annotationsSaga from './annotations';\nimport authSaga from './auth';\n\n/** */\nfunction* launchSaga(saga) {\n while (true) {\n try {\n yield call(saga);\n break;\n } catch (e) {\n console.log(e);\n }\n }\n}\n\n/** */\nfunction getRootSaga(pluginSagas = []) {\n return function* rootSaga() {\n const sagas = [annotationsSaga, appSaga, iiifSaga, windowSaga, authSaga, ...pluginSagas];\n\n yield all(sagas.map((saga) => spawn(launchSaga, saga)));\n };\n}\n\nexport default getRootSaga;\n","// Topics for understanding\n// redux modules for nested stores\n// state normalisation\n// (normalizer library)\n\nimport { thunk } from 'redux-thunk';\nimport createSagaMiddleware from 'redux-saga';\nimport { combineReducers, createStore, applyMiddleware } from 'redux';\nimport { composeWithDevTools } from '@redux-devtools/extension';\nimport createRootReducer from './reducers/rootReducer';\nimport getRootSaga from './sagas';\nimport settings from '../config/settings';\n\n/**\n * Configure Store\n */\nfunction configureStore(pluginReducers, pluginSagas = []) {\n const miradorReducer = createRootReducer(pluginReducers);\n\n const rootReducer = settings.state.slice ? combineReducers({ [settings.state.slice]: miradorReducer }) : miradorReducer;\n\n // create the saga middleware\n const sagaMiddleware = createSagaMiddleware();\n\n const store = createStore(rootReducer, composeWithDevTools(applyMiddleware(thunk, sagaMiddleware)));\n\n // then run the saga\n sagaMiddleware.run(getRootSaga(pluginSagas));\n\n return store;\n}\n\nexport default configureStore;\n","import deepmerge from 'deepmerge';\nimport createStore from './createStore';\nimport { importConfig } from './actions/config';\nimport {\n filterValidPlugins,\n getConfigFromPlugins,\n getReducersFromPlugins,\n getSagasFromPlugins,\n} from '../extend/pluginPreprocessing';\n\n/**\n * Configure Store\n */\nfunction createPluggableStore(config, plugins = []) {\n const filteredPlugins = filterValidPlugins(plugins);\n\n const store = createStore(getReducersFromPlugins(filteredPlugins), getSagasFromPlugins(filteredPlugins));\n\n store.dispatch(importConfig(deepmerge(getConfigFromPlugins(filteredPlugins), config)));\n\n return store;\n}\n\nexport default createPluggableStore;\n","import { createRoot } from 'react-dom/client';\nimport { Provider } from 'react-redux';\nimport HotApp from '../components/App';\nimport { filterValidPlugins } from '../extend/pluginPreprocessing';\nimport createPluggableStore from '../state/createPluggableStore';\n\n/**\n * Default Mirador instantiation\n */\nclass MiradorViewer {\n /**\n */\n constructor(config, viewerConfig = {}) {\n this.plugins = filterValidPlugins(viewerConfig.plugins || []);\n this.config = config;\n this.dndManager = viewerConfig.dndManager;\n this.store = viewerConfig.store || createPluggableStore(this.config, this.plugins);\n\n if (config.id) this.renderInto(document.getElementById(config.id));\n }\n\n /**\n * @private\n * @param {*} container\n */\n renderInto(container) {\n this.container = container;\n this.root = createRoot(this.container);\n\n this.root.render(this.render({ dndManager: this.dndManager }));\n }\n\n /**\n * Render the mirador viewer\n */\n render(props = {}) {\n return (\n <Provider store={this.store}>\n <HotApp plugins={this.plugins} {...props} />\n </Provider>\n );\n }\n\n /**\n * Cleanup method to unmount Mirador from the dom\n */\n unmount() {\n if (!this.root) return;\n\n this.root.unmount();\n }\n}\n\nexport default MiradorViewer;\n","import MiradorViewer from './lib/MiradorViewer';\n\n/**\n * Default Mirador instantiation\n */\nexport function viewer(config, pluginsOrStruct) {\n let struct;\n\n if (Array.isArray(pluginsOrStruct)) {\n struct = { plugins: pluginsOrStruct };\n } else {\n struct = pluginsOrStruct;\n }\n\n return new MiradorViewer(config, struct);\n}\n\nexport default {\n viewer,\n};\n","import * as actions from './actions';\nimport * as reducers from './reducers';\nimport * as sagas from './sagas';\nimport * as selectors from './selectors';\nimport createStore from './createStore';\n\nexport default {\n actions,\n createStore,\n reducers,\n sagas,\n selectors,\n};\n\nexport * from './actions';\nexport * from './reducers';\nexport { default as rootReducer } from './reducers/rootReducer';\nexport { default as rootSaga } from './sagas';\nexport * from './selectors';\nexport { default as createStore } from './createStore';\nexport { default as createPluggableStore } from './createPluggableStore';\n","import init from './init';\nimport state from './state';\n\nexport * from './state';\nexport * from './components';\nexport * from './containers';\nexport * from './contexts';\nexport * from './extend';\nexport * from './lib';\nexport * from './plugins';\nexport * from './config';\nexport { useTranslation, withTranslation } from 'react-i18next';\nexport { viewer } from './init';\n\nexport default {\n ...init,\n ...state,\n};\n"],"x_google_ignoreList":[0,1,2,3,4,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,137],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}