{"version":3,"sources":["node_modules/deepmerge/dist/cjs.js","node_modules/@angular/animations/fesm2022/browser.mjs","node_modules/@angular/platform-browser/fesm2022/animations.mjs","src/app/core/components/progress-bar/progress-bar.component.ts","src/app/core/components/progress-bar/progress-bar.component.html","src/app/core/core.module.ts","src/app/pages/renal-detect/store/renal-detect-feature-key.ts","node_modules/ngrx-store-localstorage/fesm2022/ngrx-store-localstorage.mjs","src/app/store/consultation/consultation.state.ts","src/app/store/consultation/consultation.reducer.ts","src/app/store/consultation/consultation-feature-key.ts","src/app/store/consultation/effects/consultation-pet-owner.effects.ts","src/app/store/consultation/effects/consultation-create.effects.ts","src/app/store/consultation/effects/consultation-vetsource.effects.ts","src/app/store/consultation/effects/index.ts","src/app/store/index.ts","src/app/pages/daily-allowance/store/daily-allowance-feature-key.ts","src/app/pages/weight-management/store/weight-management-feature-key.ts","src/app/pages/muf-personalised-bag/store/muf-personalised-bag-feature-key.ts","src/app/pages/new-pet/store/new-pet-feature-key.ts","src/app/pages/muf-starter-kit/store/muf-starter-kit-feature-key.ts","src/app/store/app-store.module.ts","node_modules/@ngrx/store-devtools/fesm2022/ngrx-store-devtools.mjs","src/app/pages/browser-deprecation/browser-deprecation.component.ts","src/app/pages/browser-deprecation/browser-deprecation.component.html","src/app/pages/okta/callback.component.ts","src/app/pages/pet-page/container/pet-page.component.ts","src/app/pages/pet-page/container/pet-page.component.html","src/app/standalone/standalone-guard.ts","src/app/standalone/srs-init.component.ts","src/app/standalone/standalone-progress-bar/standalone-progress-bar.component.ts","src/app/standalone/standalone-progress-bar/standalone-progress-bar.component.html","src/app/standalone/standalone-nav/srs-nav.component.ts","src/app/standalone/standalone-nav/standalone-nav.component.html","src/app/standalone/srs-main-page/srs-main-page.component.ts","src/app/standalone/srs-main-page/srs-main-page.component.html","src/app/standalone/standalone-access-denied/standalone-access-denied.component.ts","src/app/standalone/standalone-access-denied/standalone-access-denied.component.html","src/app/srs-routing.module.ts","src/app/app.component.ts","src/app/app.component.html","node_modules/date-fns/esm/_lib/isSameUTCWeek/index.js","node_modules/date-fns/esm/locale/cs/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/cs/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/cs/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/cs/_lib/localize/index.js","node_modules/date-fns/esm/locale/cs/_lib/match/index.js","node_modules/date-fns/esm/locale/cs/index.js","node_modules/date-fns/esm/locale/da/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/da/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/da/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/da/_lib/localize/index.js","node_modules/date-fns/esm/locale/da/_lib/match/index.js","node_modules/date-fns/esm/locale/da/index.js","node_modules/date-fns/esm/locale/de/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/de/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/de/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/de/_lib/localize/index.js","node_modules/date-fns/esm/locale/de/_lib/match/index.js","node_modules/date-fns/esm/locale/de/index.js","node_modules/date-fns/esm/locale/el/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/el/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/el/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/el/_lib/localize/index.js","node_modules/date-fns/esm/locale/el/_lib/match/index.js","node_modules/date-fns/esm/locale/el/index.js","node_modules/date-fns/esm/locale/en-AU/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/en-AU/index.js","node_modules/date-fns/esm/locale/en-CA/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/en-CA/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/en-CA/index.js","node_modules/date-fns/esm/locale/en-GB/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/en-GB/index.js","node_modules/date-fns/esm/locale/es/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/es/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/es/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/es/_lib/localize/index.js","node_modules/date-fns/esm/locale/es/_lib/match/index.js","node_modules/date-fns/esm/locale/es/index.js","node_modules/date-fns/esm/locale/et/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/et/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/et/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/et/_lib/localize/index.js","node_modules/date-fns/esm/locale/et/_lib/match/index.js","node_modules/date-fns/esm/locale/et/index.js","node_modules/date-fns/esm/locale/fi/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/fi/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/fi/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/fi/_lib/localize/index.js","node_modules/date-fns/esm/locale/fi/_lib/match/index.js","node_modules/date-fns/esm/locale/fi/index.js","node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","node_modules/date-fns/esm/locale/fr/_lib/match/index.js","node_modules/date-fns/esm/locale/fr/index.js","node_modules/date-fns/esm/locale/fr-CA/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/fr-CA/index.js","node_modules/date-fns/esm/locale/hu/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/hu/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/hu/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/hu/_lib/localize/index.js","node_modules/date-fns/esm/locale/hu/_lib/match/index.js","node_modules/date-fns/esm/locale/hu/index.js","node_modules/date-fns/esm/locale/it/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/it/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/it/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/it/_lib/localize/index.js","node_modules/date-fns/esm/locale/it/_lib/match/index.js","node_modules/date-fns/esm/locale/it/index.js","node_modules/date-fns/esm/locale/ko/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/ko/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/ko/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/ko/_lib/localize/index.js","node_modules/date-fns/esm/locale/ko/_lib/match/index.js","node_modules/date-fns/esm/locale/ko/index.js","node_modules/date-fns/esm/locale/lt/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/lt/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/lt/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/lt/_lib/localize/index.js","node_modules/date-fns/esm/locale/lt/_lib/match/index.js","node_modules/date-fns/esm/locale/lt/index.js","node_modules/date-fns/esm/locale/lv/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/lv/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/lv/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/lv/_lib/localize/index.js","node_modules/date-fns/esm/locale/lv/_lib/match/index.js","node_modules/date-fns/esm/locale/lv/index.js","node_modules/date-fns/esm/locale/nb/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/nb/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/nb/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/nb/_lib/localize/index.js","node_modules/date-fns/esm/locale/nb/_lib/match/index.js","node_modules/date-fns/esm/locale/nb/index.js","node_modules/date-fns/esm/locale/nl/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/nl/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/nl/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/nl/_lib/localize/index.js","node_modules/date-fns/esm/locale/nl/_lib/match/index.js","node_modules/date-fns/esm/locale/nl/index.js","node_modules/date-fns/esm/locale/nl-BE/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/nl-BE/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/nl-BE/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/nl-BE/_lib/localize/index.js","node_modules/date-fns/esm/locale/nl-BE/_lib/match/index.js","node_modules/date-fns/esm/locale/nl-BE/index.js","node_modules/date-fns/esm/locale/pl/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/pl/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/pl/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/pl/_lib/localize/index.js","node_modules/date-fns/esm/locale/pl/_lib/match/index.js","node_modules/date-fns/esm/locale/pl/index.js","node_modules/date-fns/esm/locale/pt/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/pt/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/pt/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/pt/_lib/localize/index.js","node_modules/date-fns/esm/locale/pt/_lib/match/index.js","node_modules/date-fns/esm/locale/pt/index.js","node_modules/date-fns/esm/locale/ro/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/ro/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/ro/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/ro/_lib/localize/index.js","node_modules/date-fns/esm/locale/ro/_lib/match/index.js","node_modules/date-fns/esm/locale/ro/index.js","node_modules/date-fns/esm/locale/ru/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/ru/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/ru/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/ru/_lib/localize/index.js","node_modules/date-fns/esm/locale/ru/_lib/match/index.js","node_modules/date-fns/esm/locale/ru/index.js","node_modules/date-fns/esm/locale/sk/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/sk/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/sk/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/sk/_lib/localize/index.js","node_modules/date-fns/esm/locale/sk/_lib/match/index.js","node_modules/date-fns/esm/locale/sk/index.js","node_modules/date-fns/esm/locale/sv/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/sv/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/sv/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/sv/_lib/localize/index.js","node_modules/date-fns/esm/locale/sv/_lib/match/index.js","node_modules/date-fns/esm/locale/sv/index.js","node_modules/date-fns/esm/locale/tr/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/tr/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/tr/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/tr/_lib/localize/index.js","node_modules/date-fns/esm/locale/tr/_lib/match/index.js","node_modules/date-fns/esm/locale/tr/index.js","node_modules/date-fns/esm/locale/zh-CN/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/zh-CN/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/zh-CN/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/zh-CN/_lib/localize/index.js","node_modules/date-fns/esm/locale/zh-CN/_lib/match/index.js","node_modules/date-fns/esm/locale/zh-CN/index.js","node_modules/date-fns/esm/locale/zh-HK/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/zh-HK/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/zh-HK/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/zh-HK/_lib/localize/index.js","node_modules/date-fns/esm/locale/zh-HK/_lib/match/index.js","node_modules/date-fns/esm/locale/zh-HK/index.js","node_modules/date-fns/esm/locale/zh-TW/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/zh-TW/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/zh-TW/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/zh-TW/_lib/localize/index.js","node_modules/date-fns/esm/locale/zh-TW/_lib/match/index.js","node_modules/date-fns/esm/locale/zh-TW/index.js","src/app/app.module.ts","node_modules/@angular/localize/fesm2022/localize.mjs","src/locale-loader.ts","node_modules/zone.js/fesm2015/zone.js","src/main.ts"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n};\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\nfunction isReactElement(value) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\nfunction defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepmerge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return target.propertyIsEnumerable(symbol);\n }) : [];\n}\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\nfunction mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\nfunction deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || isMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject(target, source, options);\n }\n}\ndeepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) {\n throw new Error('first argument should be an array');\n }\n return array.reduce(function (prev, next) {\n return deepmerge(prev, next, options);\n }, {});\n};\nvar deepmerge_1 = deepmerge;\nmodule.exports = deepmerge_1;","/**\n * @license Angular v17.3.5\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, AnimationMetadataType, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode && `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode && \"animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))\");\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode && `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode && `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode && `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode && `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode && `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode && `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode && `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && \"The requested animation doesn't exist or has already been destroyed\");\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode && `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode && `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode && `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode && `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode && `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode && `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = /*#__PURE__*/new Set(['-moz-outline-radius', '-moz-outline-radius-bottomleft', '-moz-outline-radius-bottomright', '-moz-outline-radius-topleft', '-moz-outline-radius-topright', '-ms-grid-columns', '-ms-grid-rows', '-webkit-line-clamp', '-webkit-text-fill-color', '-webkit-text-stroke', '-webkit-text-stroke-color', 'accent-color', 'all', 'backdrop-filter', 'background', 'background-color', 'background-position', 'background-size', 'block-size', 'border', 'border-block-end', 'border-block-end-color', 'border-block-end-width', 'border-block-start', 'border-block-start-color', 'border-block-start-width', 'border-bottom', 'border-bottom-color', 'border-bottom-left-radius', 'border-bottom-right-radius', 'border-bottom-width', 'border-color', 'border-end-end-radius', 'border-end-start-radius', 'border-image-outset', 'border-image-slice', 'border-image-width', 'border-inline-end', 'border-inline-end-color', 'border-inline-end-width', 'border-inline-start', 'border-inline-start-color', 'border-inline-start-width', 'border-left', 'border-left-color', 'border-left-width', 'border-radius', 'border-right', 'border-right-color', 'border-right-width', 'border-start-end-radius', 'border-start-start-radius', 'border-top', 'border-top-color', 'border-top-left-radius', 'border-top-right-radius', 'border-top-width', 'border-width', 'bottom', 'box-shadow', 'caret-color', 'clip', 'clip-path', 'color', 'column-count', 'column-gap', 'column-rule', 'column-rule-color', 'column-rule-width', 'column-width', 'columns', 'filter', 'flex', 'flex-basis', 'flex-grow', 'flex-shrink', 'font', 'font-size', 'font-size-adjust', 'font-stretch', 'font-variation-settings', 'font-weight', 'gap', 'grid-column-gap', 'grid-gap', 'grid-row-gap', 'grid-template-columns', 'grid-template-rows', 'height', 'inline-size', 'input-security', 'inset', 'inset-block', 'inset-block-end', 'inset-block-start', 'inset-inline', 'inset-inline-end', 'inset-inline-start', 'left', 'letter-spacing', 'line-clamp', 'line-height', 'margin', 'margin-block-end', 'margin-block-start', 'margin-bottom', 'margin-inline-end', 'margin-inline-start', 'margin-left', 'margin-right', 'margin-top', 'mask', 'mask-border', 'mask-position', 'mask-size', 'max-block-size', 'max-height', 'max-inline-size', 'max-lines', 'max-width', 'min-block-size', 'min-height', 'min-inline-size', 'min-width', 'object-position', 'offset', 'offset-anchor', 'offset-distance', 'offset-path', 'offset-position', 'offset-rotate', 'opacity', 'order', 'outline', 'outline-color', 'outline-offset', 'outline-width', 'padding', 'padding-block-end', 'padding-block-start', 'padding-bottom', 'padding-inline-end', 'padding-inline-start', 'padding-left', 'padding-right', 'padding-top', 'perspective', 'perspective-origin', 'right', 'rotate', 'row-gap', 'scale', 'scroll-margin', 'scroll-margin-block', 'scroll-margin-block-end', 'scroll-margin-block-start', 'scroll-margin-bottom', 'scroll-margin-inline', 'scroll-margin-inline-end', 'scroll-margin-inline-start', 'scroll-margin-left', 'scroll-margin-right', 'scroll-margin-top', 'scroll-padding', 'scroll-padding-block', 'scroll-padding-block-end', 'scroll-padding-block-start', 'scroll-padding-bottom', 'scroll-padding-inline', 'scroll-padding-inline-end', 'scroll-padding-inline-start', 'scroll-padding-left', 'scroll-padding-right', 'scroll-padding-top', 'scroll-snap-coordinate', 'scroll-snap-destination', 'scrollbar-color', 'shape-image-threshold', 'shape-margin', 'shape-outside', 'tab-size', 'text-decoration', 'text-decoration-color', 'text-decoration-thickness', 'text-emphasis', 'text-emphasis-color', 'text-indent', 'text-shadow', 'text-underline-offset', 'top', 'transform', 'transform-origin', 'translate', 'vertical-align', 'visibility', 'width', 'word-spacing', 'z-index', 'zoom']);\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(normalizer, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = isSameOffset && previousKeyframe || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue = normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return {\n element,\n triggerName,\n fromState,\n toState,\n phaseName,\n totalTime,\n disabled: !!disabled\n };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nconst documentElement = /* @__PURE__ */(() => typeof document === 'undefined' ? null : document.documentElement)();\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? 'WebkitAppearance' in _CACHED_BODY.style : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nfunction containsElement(elm1, elm2) {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\nfunction invokeQuery(element, selector, multi) {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @publicApi\n *\n * `AnimationDriver` implentation for Noop animations\n */\nlet NoopAnimationDriver = /*#__PURE__*/(() => {\n class NoopAnimationDriver {\n /**\n * @returns Whether `prop` is a valid CSS property\n */\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n /**\n * @deprecated unused\n */\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n /**\n *\n * @returns Whether elm1 contains elm2.\n */\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n /**\n * @returns Rhe parent of the given element or `null` if the element is the `document`\n */\n getParentElement(element) {\n return getParentElement(element);\n }\n /**\n * @returns The result of the query selector on the element. The array will contain up to 1 item\n * if `multi` is `false`.\n */\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n /**\n * @returns The `defaultValue` or empty string\n */\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n /**\n * @returns An `NoopAnimationPlayer`\n */\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n static {\n this.ɵfac = function NoopAnimationDriver_Factory(t) {\n return new (t || NoopAnimationDriver)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NoopAnimationDriver,\n factory: NoopAnimationDriver.ɵfac\n });\n }\n }\n return NoopAnimationDriver;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @publicApi\n */\nclass AnimationDriver {\n /**\n * @deprecated Use the NoopAnimationDriver class.\n */\n static {\n this.NOOP = /*#__PURE__*/new NoopAnimationDriver();\n }\n}\nclass AnimationStyleNormalizer {}\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number') return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2) return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default:\n // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ? timings : parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return {\n duration: 0,\n delay: 0,\n easing: ''\n };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n } else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return {\n duration,\n delay,\n easing\n };\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map(kf => new Map(Object.entries(kf)));\n}\nfunction normalizeStyles(styles) {\n return Array.isArray(styles) ? new Map(...styles) : new Map(styles);\n}\nfunction setStyles(element, styles, formerStyles) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\nfunction eraseStyles(element, styles) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1) return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = /*#__PURE__*/new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = `${value}`;\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case AnimationMetadataType.Trigger:\n return visitor.visitTrigger(node, context);\n case AnimationMetadataType.State:\n return visitor.visitState(node, context);\n case AnimationMetadataType.Transition:\n return visitor.visitTransition(node, context);\n case AnimationMetadataType.Sequence:\n return visitor.visitSequence(node, context);\n case AnimationMetadataType.Group:\n return visitor.visitGroup(node, context);\n case AnimationMetadataType.Animate:\n return visitor.visitAnimate(node, context);\n case AnimationMetadataType.Keyframes:\n return visitor.visitKeyframes(node, context);\n case AnimationMetadataType.Style:\n return visitor.visitStyle(node, context);\n case AnimationMetadataType.Reference:\n return visitor.visitReference(node, context);\n case AnimationMetadataType.AnimateChild:\n return visitor.visitAnimateChild(node, context);\n case AnimationMetadataType.AnimateRef:\n return visitor.visitAnimateRef(node, context);\n case AnimationMetadataType.Query:\n return visitor.visitQuery(node, context);\n case AnimationMetadataType.Stagger:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\nconst DIMENSIONAL_PROP_SET = /*#__PURE__*/new Set(['width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight', 'left', 'top', 'bottom', 'right', 'fontSize', 'outlineWidth', 'outlineOffset', 'paddingTop', 'paddingLeft', 'paddingBottom', 'paddingRight', 'marginTop', 'marginLeft', 'marginBottom', 'marginRight', 'borderRadius', 'borderWidth', 'borderTopWidth', 'borderLeftWidth', 'borderRightWidth', 'borderBottomWidth', 'textIndent', 'perspective']);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n } else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n } else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n return;\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = /*#__PURE__*/new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = /*#__PURE__*/new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = /*#__PURE__*/new RegExp(`s*${SELF_TOKEN}s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == AnimationMetadataType.State) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n } else if (def.type == AnimationMetadataType.Transition) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n } else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: AnimationMetadataType.Trigger,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = metadata.options && metadata.options.params || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n context.errors.push(invalidState(metadata.name, [...missingSubs.values()]));\n }\n }\n return {\n type: AnimationMetadataType.State,\n name: metadata.name,\n style: styleAst,\n options: astParams ? {\n params: astParams\n } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: AnimationMetadataType.Transition,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: AnimationMetadataType.Sequence,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: AnimationMetadataType.Group,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == AnimationMetadataType.Keyframes) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n } else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: AnimationMetadataType.Animate,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n } else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n } else {\n styles.push(new Map(Object.entries(styleTuple)));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: AnimationMetadataType.Style,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string') return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime && endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, {\n startTime,\n endTime\n });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = {\n type: AnimationMetadataType.Keyframes,\n styles: [],\n options: null\n };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n } else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? i == limit ? 1 : generatedOffset * i : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: AnimationMetadataType.Reference,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: AnimationMetadataType.AnimateChild,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: AnimationMetadataType.AnimateRef,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = metadata.options || {};\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector = parentSelector.length ? parentSelector + ' ' + selector : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: AnimationMetadataType.Query,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ? {\n duration: 0,\n delay: 0,\n easing: 'full'\n } : resolveTiming(metadata.timings, context.errors, true);\n return {\n type: AnimationMetadataType.Stagger,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR).replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1)).replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? {\n ...obj\n } : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = new Map();\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string') return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n } else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = {\n ...options\n };\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n } else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return {\n duration,\n delay,\n easing\n };\n}\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = /*#__PURE__*/new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = /*#__PURE__*/new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ? timelines.map(timeline => timeline.buildKeyframes()) : [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number' ? animationDelay : resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime = Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == AnimationMetadataType.Style) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n } else {\n return {\n duration: ast.duration,\n delay: ast.delay,\n easing: ast.easing\n };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == AnimationMetadataType.Keyframes) {\n this.visitKeyframes(style, context);\n } else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = timings && timings.easing || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n } else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = context.currentTimeline.duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = ast.options || {};\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay && (context.previousNode.type === AnimationMetadataType.Style || startTime == 0 && context.currentTimeline.hasCurrentStyleProperties())) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime = tl.currentTime - startingTime + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options) return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) {\n // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) : elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this.easing = null;\n this._previousKeyframe = new Map();\n this._currentKeyframe = new Map();\n this._keyframes = new Map();\n this._styleSummary = new Map();\n this._localTimelineStyles = new Map();\n this._pendingStyles = new Map();\n this._backFill = new Map();\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n } else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, {\n time: this.currentTime,\n value\n });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = options && options.params || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0) return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = new Map([...this._backFill, ...keyframe]);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n } else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = [...preStyleProps.values()];\n const postProps = [...postStyleProps.values()];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = {\n duration: timings.duration,\n delay: timings.delay,\n easing: timings.easing\n };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let {\n delay,\n duration,\n easing\n } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = new Map(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = new Map(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n delay=1000, duration=1000, keyframes = 0 .5 1\n turns into\n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = new Map(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties ??= allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n } else {\n for (let [prop, val] of token) {\n styles.set(prop, val);\n }\n }\n });\n return styles;\n}\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay\n };\n const timelines = skipAstBuild ? [] : buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, [...queriedElements.values()], preStyleMap, postStyleMap, totalTime);\n }\n}\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(timelines, triggerName, driver) {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n const allowedNonAnimatableProps = new Set([\n // 'easing' is a utility/synthetic prop we use to represent\n // easing functions, it represents a property of the animation\n // which is not animatable but different values can be used\n // in different steps\n 'easing']);\n const invalidNonAnimatableProps = new Set();\n timelines.forEach(({\n keyframes\n }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n const entriesToCheck = Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));\n for (const [prop, value] of entriesToCheck) {\n if (!driver.validateAnimatableStyleProperty(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n } else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(`Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` + ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\\n' + '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = {\n ...defaults\n };\n Object.entries(userParams).forEach(([key, value]) => {\n if (value != null) {\n result[key] = value;\n }\n });\n return result;\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = applyParamDefaults(params, this.defaultParams);\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(prop, val);\n });\n }\n });\n return finalStyles;\n }\n}\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = new Map();\n ast.states.forEach(ast => {\n const defaultParams = ast.options && ast.options.params || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = {\n type: AnimationMetadataType.Sequence,\n steps: [],\n options: null\n };\n const transition = {\n type: AnimationMetadataType.Transition,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n } else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\nconst EMPTY_INSTRUCTION_MAP = /*#__PURE__*/new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = new Map();\n this._playersById = new Map();\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n } else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._normalizer, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n } else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => {};\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = args[0] || {};\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n get params() {\n return this.options.params;\n }\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n // we drop the value property from options.\n const {\n value,\n ...options\n } = input;\n this.options = options;\n } else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = /*#__PURE__*/new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = new Map();\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = {\n name,\n phase,\n callback\n };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n } else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n } else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback) return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition\n });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG]) return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n } else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName)) return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true)) return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n } else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n } else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed) return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach(listener => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n } else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n}\nclass TransitionAnimationEngine {\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n constructor(bodyNode, driver, _normalizer, scheduler) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.scheduler = scheduler;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => {};\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n } else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n } else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId) return;\n this.afterFlush(() => {});\n this.afterFlushAnimationsDone(() => {\n const ns = this._fetchNamespace(namespaceId);\n this.namespacesByHostElement.delete(ns.hostElement);\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n ns.destroy(context);\n delete this._namespaceLookup[namespaceId];\n });\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element)) return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n } else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, context) {\n if (isElementNode(element)) {\n this.scheduler?.notify();\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n } else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n } else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => {};\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0) return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n } else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n } else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length && (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n } finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n } else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n } else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n } else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues && details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = {\n instruction,\n player,\n element\n };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const {\n element,\n player,\n instruction\n } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n } else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n } else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n } else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation) continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n } else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n } else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued) return;\n if (!isRemovalAnimation && player.triggerName != triggerName) return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId) return false;\n if (triggerName && triggerName != player.triggerName) return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried) return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY).map(p => p.getRealPlayer())).filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this._normalizer, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = new Map();\n this.destroyed = false;\n this.parentPlayer = null;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer) return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0) return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node) return NULL_NODE;\n let root = localRootMap.get(node);\n if (root) return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) {\n // ngIf inside @trigger\n root = parent;\n } else if (nodeSet.has(parent)) {\n // ngIf inside ngIf\n root = NULL_NODE;\n } else {\n // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n } else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length) return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop]) return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry) return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n } else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\nclass AnimationEngine {\n constructor(doc, _driver, _normalizer, scheduler) {\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => {};\n this._transitionEngine = new TransitionAnimationEngine(doc.body, _driver, _normalizer, scheduler);\n this._timelineEngine = new TimelineAnimationEngine(doc.body, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context) {\n this._transitionEngine.removeNode(namespaceId, element, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n } else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return [...this._transitionEngine.players, ...this._timelineEngine.players];\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n afterFlushAnimationsDone(cb) {\n this._transitionEngine.afterFlushAnimationsDone(cb);\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n } else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return startStyles || endStyles ? new SpecialCasedStyles(element, startStyles, endStyles) : null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n static {\n this.initialStylesByElement = /*#__PURE__*/new WeakMap();\n }\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* SpecialCasedStylesState.Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n}\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = new Map();\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized) return;\n this._initialized = true;\n const keyframes = this.keyframes;\n // @ts-expect-error overwriting a readonly property\n this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n const onFinish = () => this._onFinish();\n this.domPlayer.addEventListener('finish', onFinish);\n this.onDestroy(() => {\n // We must remove the `finish` event listener once an animation has completed all its\n // iterations. This action is necessary to prevent a memory leak since the listener captures\n // `this`, creating a closure that prevents `this` from being garbage collected.\n this.domPlayer.removeEventListener('finish', onFinish);\n });\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n } else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n return element.animate(this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n // tsc is complaining with TS2362 without the conversion to number\n return +(this.domPlayer.currentTime ?? 0) / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return computeStyle(element, prop);\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = {\n duration,\n delay,\n fill\n };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map(styles => new Map(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\nfunction createEngine(type, doc, scheduler) {\n // TODO: find a way to make this tree shakable.\n if (type === 'noop') {\n return new AnimationEngine(doc, new NoopAnimationDriver(), new NoopAnimationStyleNormalizer(), scheduler);\n }\n return new AnimationEngine(doc, new WebAnimationsDriver(), new WebAnimationsStyleNormalizer(), scheduler);\n}\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) : startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) : destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine, _onDestroy) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this._onDestroy = _onDestroy;\n // We need to explicitly type this property because of an api-extractor bug\n // See https://github.com/microsoft/rushstack/issues/4390\n this.ɵtype = 0 /* AnimationRendererType.Regular */;\n }\n get data() {\n return this.delegate.data;\n }\n destroyNode(node) {\n this.delegate.destroyNode?.(node);\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.engine.afterFlushAnimationsDone(() => {\n // Call the renderer destroy method after the animations has finished as otherwise\n // styles will be removed too early which will cause an unstyled animation.\n queueMicrotask(() => {\n this.delegate.destroy();\n });\n });\n this._onDestroy?.();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n } else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine, onDestroy) {\n super(namespaceId, delegate, engine, onDestroy);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n } else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n } else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate?.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type?.data?.['animation']) {\n const cache = this._rendererCache;\n let renderer = cache.get(delegate);\n if (!renderer) {\n // Ensure that the renderer is removed from the cache on destroy\n // since it may contain references to detached DOM nodes.\n const onRendererDestroy = () => cache.delete(delegate);\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);\n // only cache this result when the base renderer is used\n cache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = trigger => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n } else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n queueMicrotask(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n const animationCallbacksBuffer = this._animationCallbacksBuffer;\n if (animationCallbacksBuffer.length == 0) {\n queueMicrotask(() => {\n this._zone.run(() => {\n animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, NoopAnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, BaseAnimationRenderer as ɵBaseAnimationRenderer, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, camelCaseToDashCase as ɵcamelCaseToDashCase, containsElement as ɵcontainsElement, createEngine as ɵcreateEngine, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty, validateWebAnimatableStyleProperty as ɵvalidateWebAnimatableStyleProperty };\n","/**\n * @license Angular v17.3.5\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { inject, ɵChangeDetectionScheduler, Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule, ɵperformanceMarkFeature } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationRendererFactory, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, NoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\nlet InjectableAnimationEngine = /*#__PURE__*/(() => {\n class InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer) {\n super(doc, driver, normalizer, inject(ɵChangeDetectionScheduler, {\n optional: true\n }));\n }\n ngOnDestroy() {\n this.flush();\n }\n static {\n this.ɵfac = function InjectableAnimationEngine_Factory(t) {\n return new (t || InjectableAnimationEngine)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1.AnimationDriver), i0.ɵɵinject(i1.ɵAnimationStyleNormalizer));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InjectableAnimationEngine,\n factory: InjectableAnimationEngine.ɵfac\n });\n }\n }\n return InjectableAnimationEngine;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new ɵAnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [{\n provide: ɵAnimationStyleNormalizer,\n useFactory: instantiateDefaultStyleNormalizer\n}, {\n provide: ɵAnimationEngine,\n useClass: InjectableAnimationEngine\n}, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n}];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [{\n provide: AnimationDriver,\n useFactory: () => new ɵWebAnimationsDriver()\n}, {\n provide: ANIMATION_MODULE_TYPE,\n useValue: 'BrowserAnimations'\n}, ...SHARED_ANIMATION_PROVIDERS];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [{\n provide: AnimationDriver,\n useClass: NoopAnimationDriver\n}, {\n provide: ANIMATION_MODULE_TYPE,\n useValue: 'NoopAnimations'\n}, ...SHARED_ANIMATION_PROVIDERS];\n\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nlet BrowserAnimationsModule = /*#__PURE__*/(() => {\n class BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS : BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n static {\n this.ɵfac = function BrowserAnimationsModule_Factory(t) {\n return new (t || BrowserAnimationsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: BrowserAnimationsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n imports: [BrowserModule]\n });\n }\n }\n return BrowserAnimationsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideAnimations() {\n ɵperformanceMarkFeature('NgEagerAnimations');\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nlet NoopAnimationsModule = /*#__PURE__*/(() => {\n class NoopAnimationsModule {\n static {\n this.ɵfac = function NoopAnimationsModule_Factory(t) {\n return new (t || NoopAnimationsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NoopAnimationsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n imports: [BrowserModule]\n });\n }\n }\n return NoopAnimationsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n})\nexport class ProgressBarComponent {}\n","
\n
\n
\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { HttpClientModule, HTTP_INTERCEPTORS, provideHttpClient, withInterceptors, withInterceptorsFromDi } from '@angular/common/http';\nimport { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport {\n ActionCommunicationService,\n ApiManagerService,\n ApiService,\n AuthModule,\n BlobService,\n ChartService,\n DomService,\n EmailService,\n EnumsService,\n LoaderService,\n Logger,\n ModalService,\n NutritionService,\n ObservablesLayerService,\n OrderService,\n PetCommunicationService,\n ProductService,\n RenalDetectService,\n ScriptService,\n TokenInterceptor,\n UploadService,\n VetService,\n WindowService,\n POLetterService,\n} from '@app/core/services';\nimport { SharedModule } from '@app/shared';\nimport { ArianeTranslationPipe } from '@app/shared/pipes';\nimport { DeprecatedLoaderComponent, HeaderComponent, OverlayComponent } from './components';\nimport { ProgressBarComponent } from './components/progress-bar/progress-bar.component';\nimport { StartFlowService } from './services/start-flow/start-flow.service';\nimport { AnalyticsInterceptor } from './services/tracking/services/analytics.interceptor';\nimport { GtmEventsService } from './services/tracking/services/gtm-events.service';\nimport { GTMService } from './services/tracking/services/gtm.service';\nimport { UserSessionAnalyticsInterceptor } from './services/tracking';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@NgModule({\n imports: [CommonModule, RouterModule, HttpClientModule, AuthModule, MatDialogModule, SharedModule.forRoot()],\n declarations: [OverlayComponent, DeprecatedLoaderComponent, ProgressBarComponent, HeaderComponent],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: TokenInterceptor,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AnalyticsInterceptor,\n multi: true,\n },\n provideHttpClient(withInterceptors([UserSessionAnalyticsInterceptor]), withInterceptorsFromDi()),\n WindowService,\n ChartService,\n DomService,\n ModalService,\n LoaderService,\n ScriptService,\n GTMService,\n PetCommunicationService,\n StartFlowService,\n /* Network Services */\n ApiService,\n ApiManagerService,\n ObservablesLayerService,\n ProductService,\n VetService,\n NutritionService,\n EnumsService,\n EmailService,\n ActionCommunicationService,\n UploadService,\n GtmEventsService,\n OrderService,\n Logger,\n BlobService,\n POLetterService,\n RenalDetectService,\n /* Pipes */\n DatePipe,\n ArianeTranslationPipe,\n ],\n exports: [OverlayComponent, DeprecatedLoaderComponent, ProgressBarComponent, HeaderComponent],\n})\nexport class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n if (parentModule) {\n throw new Error('CoreModule is already loaded. Important only in AppModule');\n }\n }\n}\n","export const renalDetectFeatureKey = 'renalDetect';\n","import deepmerge from 'deepmerge';\n\n// Cannot import from the @ngrx/store package due to a module resolution issue.\n// See Issue #206.\nconst INIT_ACTION = '@ngrx/store/init';\nconst UPDATE_ACTION = '@ngrx/store/update-reducers';\nconst detectDate = /(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})/;\n// correctly parse dates from local storage\nconst dateReviver = (_key, value) => {\n if (typeof value === 'string' && detectDate.test(value)) {\n return new Date(value);\n }\n return value;\n};\nconst dummyReviver = (_key, value) => value;\nconst checkIsBrowserEnv = () => {\n return typeof window !== 'undefined';\n};\nconst validateStateKeys = keys => {\n return keys.map(key => {\n let attr = key;\n if (typeof key === 'object') {\n attr = Object.keys(key)[0];\n }\n if (typeof attr !== 'string') {\n throw new TypeError(`localStorageSync Unknown Parameter Type: ` + `Expected type of string, got ${typeof attr}`);\n }\n return key;\n });\n};\nconst rehydrateApplicationState = (keys, storage, storageKeySerializer, restoreDates) => {\n return keys.reduce((acc, curr) => {\n let key = curr;\n let reviver = restoreDates ? dateReviver : dummyReviver;\n let deserialize;\n let decrypt;\n if (typeof key === 'object') {\n key = Object.keys(key)[0];\n // use the custom reviver function\n if (typeof curr[key] === 'function') {\n reviver = curr[key];\n } else {\n // use custom reviver function if available\n if (curr[key].reviver) {\n reviver = curr[key].reviver;\n }\n // use custom serialize function if available\n if (curr[key].deserialize) {\n deserialize = curr[key].deserialize;\n }\n }\n // Ensure that encrypt and decrypt functions are both present\n if (curr[key].encrypt && curr[key].decrypt) {\n if (typeof curr[key].encrypt === 'function' && typeof curr[key].decrypt === 'function') {\n decrypt = curr[key].decrypt;\n } else {\n console.error(`Either encrypt or decrypt is not a function on '${curr[key]}' key object.`);\n }\n } else if (curr[key].encrypt || curr[key].decrypt) {\n // Let know that one of the encryption functions is not provided\n console.error(`Either encrypt or decrypt function is not present on '${curr[key]}' key object.`);\n }\n }\n if (storage !== undefined) {\n let stateSlice = storage.getItem(storageKeySerializer(key));\n if (stateSlice) {\n // Use provided decrypt function\n if (decrypt) {\n stateSlice = decrypt(stateSlice);\n }\n const isObjectRegex = new RegExp('{|\\\\[');\n let raw = stateSlice;\n if (stateSlice === 'null' || stateSlice === 'true' || stateSlice === 'false' || isObjectRegex.test(stateSlice.charAt(0))) {\n raw = JSON.parse(stateSlice, reviver);\n }\n return Object.assign({}, acc, {\n [key]: deserialize ? deserialize(raw) : raw\n });\n }\n }\n return acc;\n }, {});\n};\n// Recursively traverse all properties of the existing slice as defined by the `filter` argument,\n// and output the new object with extraneous properties removed.\nfunction createStateSlice(existingSlice, filter) {\n return filter.reduce((memo, attr) => {\n if (typeof attr === 'string' || typeof attr === 'number') {\n const value = existingSlice?.[attr];\n if (value !== undefined) {\n memo[attr] = value;\n }\n } else {\n for (const key in attr) {\n if (Object.prototype.hasOwnProperty.call(attr, key)) {\n const element = attr[key];\n memo[key] = createStateSlice(existingSlice[key], element);\n }\n }\n }\n return memo;\n }, {});\n}\nconst syncStateUpdate = (state, keys, storage, storageKeySerializer, removeOnUndefined, syncCondition) => {\n if (syncCondition) {\n try {\n if (syncCondition(state) !== true) {\n return;\n }\n } catch (e) {\n // Treat TypeError as do not sync\n if (e instanceof TypeError) {\n return;\n }\n throw e;\n }\n }\n keys.forEach(key => {\n let stateSlice = state[key];\n let replacer;\n let space;\n let encrypt;\n if (typeof key === 'object') {\n let name = Object.keys(key)[0];\n stateSlice = state[name];\n if (typeof stateSlice !== 'undefined' && key[name]) {\n // use serialize function if specified.\n if (key[name].serialize) {\n stateSlice = key[name].serialize(stateSlice);\n } else {\n // if serialize function is not specified filter on fields if an array has been provided.\n let filter;\n if (key[name].reduce) {\n filter = key[name];\n } else if (key[name].filter) {\n filter = key[name].filter;\n }\n if (filter) {\n stateSlice = createStateSlice(stateSlice, filter);\n }\n // Check if encrypt and decrypt are present, also checked at this#rehydrateApplicationState()\n if (key[name].encrypt && key[name].decrypt) {\n if (typeof key[name].encrypt === 'function') {\n encrypt = key[name].encrypt;\n }\n } else if (key[name].encrypt || key[name].decrypt) {\n // If one of those is not present, then let know that one is missing\n console.error(`Either encrypt or decrypt function is not present on '${key[name]}' key object.`);\n }\n }\n /*\n Replacer and space arguments to pass to JSON.stringify.\n If these fields don't exist, undefined will be passed.\n */\n replacer = key[name].replacer;\n space = key[name].space;\n }\n key = name;\n }\n if (typeof stateSlice !== 'undefined' && storage !== undefined) {\n try {\n if (encrypt) {\n // ensure that a string message is passed\n stateSlice = encrypt(typeof stateSlice === 'string' ? stateSlice : JSON.stringify(stateSlice, replacer, space));\n }\n storage.setItem(storageKeySerializer(key), typeof stateSlice === 'string' ? stateSlice : JSON.stringify(stateSlice, replacer, space));\n } catch (e) {\n console.warn('Unable to save state to localStorage:', e);\n }\n } else if (typeof stateSlice === 'undefined' && removeOnUndefined && storage !== undefined) {\n try {\n storage.removeItem(storageKeySerializer(key));\n } catch (e) {\n console.warn(`Exception on removing/cleaning undefined '${key}' state`, e);\n }\n }\n });\n};\n// Default merge strategy is a full deep merge.\nconst defaultMergeReducer = (state, rehydratedState, action) => {\n if ((action.type === INIT_ACTION || action.type === UPDATE_ACTION) && rehydratedState) {\n const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray;\n const options = {\n arrayMerge: overwriteMerge\n };\n state = deepmerge(state, rehydratedState, options);\n }\n return state;\n};\nconst localStorageSync = config => reducer => {\n if (config.storage === undefined && !config.checkStorageAvailability || config.checkStorageAvailability && checkIsBrowserEnv()) {\n config.storage = localStorage || window.localStorage;\n }\n if (config.storageKeySerializer === undefined) {\n config.storageKeySerializer = key => key;\n }\n if (config.restoreDates === undefined) {\n config.restoreDates = true;\n }\n // Use default merge reducer.\n let mergeReducer = config.mergeReducer;\n if (mergeReducer === undefined || typeof mergeReducer !== 'function') {\n mergeReducer = defaultMergeReducer;\n }\n const stateKeys = validateStateKeys(config.keys);\n const rehydratedState = config.rehydrate ? rehydrateApplicationState(stateKeys, config.storage, config.storageKeySerializer, config.restoreDates) : undefined;\n return function (state, action) {\n let nextState;\n // If state arrives undefined, we need to let it through the supplied reducer\n // in order to get a complete state as defined by user\n if (action.type === INIT_ACTION && !state) {\n nextState = reducer(state, action);\n } else {\n nextState = {\n ...state\n };\n }\n // Merge the store state with the rehydrated state using\n // either a user-defined reducer or the default.\n nextState = mergeReducer(nextState, rehydratedState, action);\n nextState = reducer(nextState, action);\n if (action.type !== INIT_ACTION) {\n syncStateUpdate(nextState, stateKeys, config.storage, config.storageKeySerializer, config.removeOnUndefined, config.syncCondition);\n }\n return nextState;\n };\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { dateReviver, defaultMergeReducer, localStorageSync, rehydrateApplicationState, syncStateUpdate };\n","import { AsyncActionStatus, NutritionalChoice } from '@app/shared/utils';\nimport { PetOwner } from '@app/core/models/pet-owner';\nimport { Consultation, Patient, Product, RenalDetectRecommendation } from '@app/core/models';\nimport { AllowanceParams } from '@app/pages/allowance/allowance';\nimport { NextVisitData } from '@app/core/models/visit-next';\n\n/**\n * State for all data shared between tools during a consultation\n */\nexport interface ConsultationState {\n patient: Patient | null;\n petOwner: PetOwner | null;\n renalDetectRecommendation: RenalDetectRecommendation | null;\n renalDetectNutritionalChoice: NutritionalChoice | null;\n lastConsultation: Consultation | null;\n creatingCurrentConsultation: boolean;\n currentConsultation: Consultation | null;\n selectedDryProduct: Product | null;\n selectedDryPackId: string | null;\n selectedWetProduct: Product | null;\n selectedWetPackId: string | null;\n allowanceParams: AllowanceParams | null;\n currentConsultationVisitDate: Date | null;\n skipProductBook: boolean;\n expectedNextVisit: NextVisitData | null;\n vetSourceOrderStatus: AsyncActionStatus;\n}\n\nexport const initialConsultationState: ConsultationState = {\n patient: null,\n petOwner: null,\n renalDetectRecommendation: null,\n renalDetectNutritionalChoice: null,\n lastConsultation: null,\n creatingCurrentConsultation: false,\n currentConsultation: null,\n selectedDryProduct: null,\n selectedDryPackId: null,\n selectedWetProduct: null,\n selectedWetPackId: null,\n allowanceParams: null,\n currentConsultationVisitDate: null,\n skipProductBook: false,\n expectedNextVisit: null,\n vetSourceOrderStatus: 'NONE',\n};\n","import { createReducer, on } from '@ngrx/store';\nimport {\n convertConsultationFlow,\n createCurrentConsultation,\n createCurrentConsultationFail,\n createCurrentConsultationSuccess,\n placeVetSourceOrderError,\n placeVetSourceOrderSuccess,\n resetConsultationData,\n resetConsultationFlow,\n resetCurrentConsultation,\n resetExpectedNextVisit,\n setConsultationAllowanceParams,\n setConsultationLastConsultation,\n setConsultationPatient,\n setConsultationPetOwner,\n setConsultationRenalDetectNutritionalChoice,\n setConsultationRenalDetectRecommendation,\n setConsultationSetSkipProductBook,\n setCreatingCurrentConsultation,\n setCurrentConsultationVisitDate,\n setExpectedNextVisit,\n updatePetOwnerSuccess,\n} from './consultation.actions';\nimport { initialConsultationState } from './consultation.state';\n\n/**\n * Reducer for all data shared between tools during a consultation\n */\nexport const consultationReducer = createReducer(\n initialConsultationState,\n on(setConsultationAllowanceParams, (state, action) => ({\n ...state,\n allowanceParams: action.value,\n })),\n on(setConsultationPatient, (state, action) => ({\n ...state,\n patient: action.value,\n })),\n on(setConsultationPetOwner, (state, action) => ({\n ...state,\n petOwner: action.value,\n })),\n on(updatePetOwnerSuccess, (state, action) => ({\n ...state,\n petOwner: action.value,\n })),\n on(setConsultationRenalDetectRecommendation, (state, action) => ({\n ...state,\n renalDetectRecommendation: action.value,\n })),\n on(setConsultationRenalDetectNutritionalChoice, (state, action) => ({\n ...state,\n renalDetectNutritionalChoice: action.value,\n })),\n on(setConsultationLastConsultation, (state, action) => ({\n ...state,\n lastConsultation: action.value,\n })),\n on(createCurrentConsultation, (state) => ({\n ...state,\n creatingCurrentConsultation: true,\n })),\n on(createCurrentConsultationSuccess, (state, action) => ({\n ...state,\n currentConsultation: action.consultation,\n creatingCurrentConsultation: false,\n })),\n on(resetCurrentConsultation, (state) => ({\n ...state,\n currentConsultation: null,\n })),\n on(createCurrentConsultationFail, (state) => ({\n ...state,\n creatingCurrentConsultation: false,\n })),\n on(setCreatingCurrentConsultation, (state, action) => ({\n ...state,\n creatingCurrentConsultation: action.value,\n })),\n on(setCurrentConsultationVisitDate, (state, action) => ({\n ...state,\n currentConsultationVisitDate: action.value,\n })),\n on(setConsultationSetSkipProductBook, (state, action) => ({\n ...state,\n skipProductBook: action.value,\n })),\n on(convertConsultationFlow, (state, action) => ({\n ...state,\n allowanceParams: { ...state.allowanceParams, tool: action.flow },\n })),\n on(resetConsultationFlow, (state, action) => ({\n ...state,\n allowanceParams: { ...state.allowanceParams, tool: action.coreTool },\n })),\n on(setExpectedNextVisit, (state, action) => ({\n ...state,\n expectedNextVisit: action.value,\n })),\n on(resetExpectedNextVisit, (state) => ({\n ...state,\n expectedNextVisit: null,\n })),\n on(resetConsultationData, () => initialConsultationState),\n on(placeVetSourceOrderSuccess, (state) => ({ ...state, vetSourceOrderStatus: 'SUCCESS' as const })),\n on(placeVetSourceOrderError, (state) => ({ ...state, vetSourceOrderStatus: 'ERROR' as const }))\n);\n","export const consultationFeatureKey = 'consultation';\n","import { deletePetOwnerAddress, petOwnerFail, updatePetOwner, updatePetOwnerSuccess } from './../consultation.actions';\nimport { Injectable } from '@angular/core';\nimport { VetService } from '@app/core/services';\nimport { AppState } from '@app/store';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { RcToasterService } from '@rc/ui';\nimport { of } from 'rxjs';\nimport { catchError, switchMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { selectConsultationPetOwner } from '../consultation.selectors';\nimport { toggleLoader } from '@app/store/core';\n\n@Injectable()\nexport class PetOwnerEffects {\n /**\n * Update Pet Owner\n */\n public updatePetOwner$ = createEffect(() =>\n this.actions$.pipe(\n ofType(updatePetOwner),\n switchMap(({ value }) => {\n return this.vetService.apiUpdatePetOwner(value.id, value).pipe(\n switchMap((petOwner) => {\n return [updatePetOwnerSuccess({ value: petOwner })];\n }),\n catchError((error: string) => of(petOwnerFail({ error })))\n );\n })\n )\n );\n\n /**\n * Delete Pet Owner addresses\n */\n public deletePetOwnerAddress$ = createEffect(() =>\n this.actions$.pipe(\n ofType(deletePetOwnerAddress),\n withLatestFrom(this.store$.select(selectConsultationPetOwner)),\n switchMap(([{ id }, petOwner]) => {\n return this.vetService.apiDeletePetOwnerAddress(petOwner.id, id).pipe(\n switchMap((res) => {\n return [updatePetOwnerSuccess({ value: res })];\n }),\n catchError((error: string) => of(petOwnerFail({ error })))\n );\n })\n )\n );\n\n /**\n * Pet owner generic fail\n */\n public petOwnerFail$ = createEffect(() =>\n this.actions$.pipe(\n ofType(petOwnerFail),\n tap(({ error }) => {\n return this.toaster.open({\n title: $localize`:@@error_general_title:`,\n text: error,\n type: 'error',\n });\n }),\n switchMap(() => [toggleLoader({ value: false })])\n )\n );\n\n constructor(\n private actions$: Actions,\n private store$: Store,\n private vetService: VetService,\n private toaster: RcToasterService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Consultation, Patient, Pet, PetOwner, Weight } from '@app/core/models';\nimport { NutritionService, PetService, VetService } from '@app/core/services';\nimport { CreatePatientPopinComponent, CreatePatientPopinData } from '@app/shared/components';\nimport { Helper, MeasurementCodeType, Tool } from '@app/shared/utils';\nimport { buildConsultationApiBody } from '@app/shared/utils/static-helpers/consultation-helper';\nimport { formatOwnerFormValuesToOwner } from '@app/shared/utils/static-helpers/patient-helper';\nimport { AppState } from '@app/store';\nimport { setAlert } from '@app/store/core';\nimport { selectCurrentClinicCountry, selectCurrentClinicId } from '@app/store/vet';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { Store } from '@ngrx/store';\nimport { RCAlertType } from '@rc/ui';\nimport { EMPTY, Observable } from 'rxjs';\nimport { catchError, concatMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\nimport {\n createCurrentConsultation,\n createCurrentConsultationFail,\n createCurrentConsultationSuccess,\n getExpectedNextVisit,\n resetExpectedNextVisit,\n setConsultationPatient,\n setCreatingCurrentConsultation,\n setExpectedNextVisit,\n updateConsultationNextVisit,\n updateConsultationNextVisitSuccess,\n} from '../consultation.actions';\nimport { selectConsultationLastConsultation, selectConsultationPatient, selectExpectedNextVisit } from '../consultation.selectors';\nimport { PetInfo } from './../../../core/models/pet-info';\nimport { selectAllowanceCurrentProgram } from '@app/pages/allowance/store/selectors/allowance-program.selectors';\nimport { selectGrowthChartData } from '@app/store/pet';\nimport { isNullOrUndefined } from '@app/shared';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogHelpers } from '@app/shared/utils/static-helpers/dialog-helpers';\n\n@Injectable()\nexport class ConsultationCreateEffects {\n /**\n * Create a new consultation\n * if needed, create a new patient or update existing one\n */\n createConsultation$ = createEffect(() =>\n this.actions$.pipe(\n ofType(createCurrentConsultation),\n concatLatestFrom(() => [\n this.store$.select(selectConsultationPatient),\n this.store$.select(selectCurrentClinicId),\n this.vetService.currentBigMeasurementUnit$,\n this.store$.select(selectCurrentClinicCountry),\n ]),\n switchMap(\n ([\n { consultationData, petInfo, tool, createPatientPopinTitle, owner, isRenewal = false },\n patient,\n clinicId,\n currentBigMeasurementUnit,\n country,\n ]) => {\n let firstStep: Observable<{ patient: Patient }> | null = null;\n const newPet = isNullOrUndefined(patient);\n /**\n * First we need a valid patient,\n * if it exists, we only update the pet and create the consultation\n */\n if (patient) {\n firstStep = this.updatePetAndCreateConsultation(patient, petInfo, consultationData, isRenewal, currentBigMeasurementUnit);\n /**\n * If we don't have the patient but a valid owner,\n * we need to create the patient and the consultation\n */\n } else if (owner) {\n firstStep = this.createPatientAndConsultation(petInfo, owner, clinicId, consultationData, isRenewal, currentBigMeasurementUnit);\n /**\n * If we don't have a valid patient nor a valid owner,\n * we need to create the patient, the owner and the consultation through the create-patient-popin\n */\n } else {\n firstStep = this.createPatientAndOwnerAndConsultation(\n petInfo,\n createPatientPopinTitle,\n tool,\n clinicId,\n consultationData,\n isRenewal,\n country\n );\n }\n return firstStep.pipe(\n /**\n * We now have a valid & up to date patient and consultation, we store the consultation and the patient in the store\n */\n switchMap(({ patient: updatedPatient }) => [\n setConsultationPatient({ value: updatedPatient }),\n createCurrentConsultationSuccess({ consultation: updatedPatient.consultation, newPet }),\n ])\n );\n }\n )\n )\n );\n\n /**\n * PUT next visit after create Consultation Success\n */\n putNextVisitAfterCreateConsultationSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(createCurrentConsultationSuccess),\n concatLatestFrom(() => [this.store$.select(selectExpectedNextVisit)]),\n filter(([_, nextVisit]) => !!nextVisit),\n switchMap(([{ consultation }, nextVisit]) => [\n updateConsultationNextVisit({\n nextVisit: { expected: { visitDateTime: nextVisit.intermediateVisit.weightDate?.toISOString() } },\n patientId: consultation.patientId,\n consultationId: consultation.id,\n }),\n ])\n )\n );\n\n /**\n * PUT weights (past weights added on growth chart)\n */\n putWeightsAfterCreateConsultationSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(createCurrentConsultationSuccess),\n concatLatestFrom(() => [this.store$.select(selectGrowthChartData).pipe(map((data) => data.notSavedPastWeights))]),\n filter(([_, notSavedPastWeights]) => !!notSavedPastWeights?.length),\n switchMap(([{ consultation }, notSavedPastWeights]) => {\n // TODO - TTO: backend will be improved so we do not have to do a foreach but rather a single request\n return [\n notSavedPastWeights.forEach((weight: Weight) => {\n const { id: _, ...rest } = weight;\n return this.addWeightToPet(consultation.nextVisit.petId, rest).subscribe();\n }),\n ];\n })\n ),\n { dispatch: false }\n );\n\n /**\n * DELETE current weight for existing pet\n * workaround not meant to live forever\n * if this is still here in 6 months, raise an alert\n */\n\n deleteCurrentWeightForExistingPetAfterCreateConsultationsuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(createCurrentConsultationSuccess),\n concatLatestFrom(() => [this.store$.select(selectConsultationPatient)]),\n filter(([{ newPet }]) => !newPet),\n switchMap(([, patient]) => {\n return this.petService.getPetWeights(patient.pet.id);\n }),\n map((weights) => {\n const sortedWeights = [...weights].sort((a, b) => new Date(a.weightDate).getTime() - new Date(b.weightDate).getTime());\n const weight = sortedWeights[sortedWeights.length - 2]; // the penultimate (avant-dernier for les francophones) weight is the correct one\n return { id: weight.id, petId: weight.petId };\n }),\n switchMap((body) => this.petService.deletePetWeight(body))\n ),\n { dispatch: false }\n );\n\n /**\n * Create consultation fail\n */\n createConsultationFail$ = createEffect(() =>\n this.actions$.pipe(\n ofType(createCurrentConsultationFail),\n switchMap(() => [\n setAlert({\n alert: {\n message: $localize`:@@error_general_text:`,\n alertType: RCAlertType.ERROR,\n },\n }),\n setCreatingCurrentConsultation({ value: false }),\n ])\n )\n );\n\n /**\n * Get next visit request\n */\n\n getExpectedNextVisit$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(getExpectedNextVisit),\n concatLatestFrom(() => [\n this.store$.select(selectConsultationLastConsultation),\n this.store$.select(selectAllowanceCurrentProgram),\n this.vetService.currentBigMeasurementUnit$,\n this.vetService.currentSystemPreferenceCode$,\n ]),\n switchMap(([action, lastConsultation, program, currentBigMeasurementUnit, currentSystemPreferenceCode]) => {\n const firstDate = lastConsultation?.visit?.firstVisitDate;\n\n return this.nutritionService\n .planNextVisit(action.value, firstDate, program, currentBigMeasurementUnit, currentSystemPreferenceCode, action.nextDate)\n .pipe(\n map((nextVisitData) => {\n return setExpectedNextVisit({ value: nextVisitData });\n })\n );\n })\n );\n });\n\n /**\n * Update consultation next visit request\n */\n\n updateConsultationNextVisit$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(updateConsultationNextVisit),\n switchMap((action) => {\n return this.vetService.updateConsultationVisits({ nextVisit: action.nextVisit }, action.patientId, action.consultationId).pipe(\n map(() => updateConsultationNextVisitSuccess(), resetExpectedNextVisit()),\n catchError(() => {\n setAlert({\n alert: {\n message: $localize`:@@error_general_text:`,\n alertType: RCAlertType.ERROR,\n },\n });\n resetExpectedNextVisit();\n return EMPTY;\n })\n );\n })\n );\n });\n\n constructor(\n private actions$: Actions,\n private store$: Store,\n private dialog: MatDialog,\n private vetService: VetService,\n private nutritionService: NutritionService,\n private petService: PetService\n ) {}\n\n private createPatientAndOwnerAndConsultation(\n petInfo: PetInfo,\n createPatientPopinTitle: string,\n tool: Tool,\n clinicId: string,\n consultationData: Partial,\n isRenewal: boolean,\n country: string\n ): Observable<{ patient: Patient }> {\n return (\n this.dialog\n .open(CreatePatientPopinComponent, {\n ...DialogHelpers.defaultConfig(),\n panelClass: 'medium',\n data: {\n petInfo,\n title: createPatientPopinTitle,\n tool,\n country,\n },\n })\n .afterClosed()\n /**\n * Once the popin is closed :\n */\n .pipe(\n // TODO - TTO: we should not dispatch any action in a tap. Not a good practice anymore\n tap((data) => !data && this.store$.dispatch(setCreatingCurrentConsultation({ value: false }))),\n filter((data) => !!data),\n withLatestFrom(this.vetService.currentBigMeasurementUnit$),\n /**\n * we create a new patient with the consultation (with existing owner or not)\n */\n switchMap(([{ values }, currentBigMeasurementUnit]) =>\n this.createPatientAndConsultation(\n petInfo,\n formatOwnerFormValuesToOwner(values),\n clinicId,\n consultationData,\n isRenewal,\n currentBigMeasurementUnit\n )\n )\n )\n );\n }\n\n private createPatientAndConsultation(\n petInfo: PetInfo,\n owner: PetOwner,\n clinicId: string,\n consultationData: Partial,\n isRenewal: boolean,\n currentBigMeasurementUnit: MeasurementCodeType\n ): Observable<{ patient: Patient }> {\n return this.vetService\n .createPatient(\n Helper.petInfoToPet(petInfo, currentBigMeasurementUnit),\n { ...owner, organizationId: clinicId },\n buildConsultationApiBody(consultationData, isRenewal)\n )\n .pipe(\n map((newPatient) => ({ patient: newPatient })),\n catchError((error) => {\n this.store$.dispatch(createCurrentConsultationFail({ error }));\n return EMPTY;\n })\n );\n }\n\n private updatePetAndCreateConsultation(\n patient: Patient,\n petInfo: PetInfo,\n consultationData: Partial,\n isRenewal: boolean,\n currentBigMeasurementUnit: MeasurementCodeType\n ): Observable<{ patient: Patient }> {\n return this.vetService\n .updatePet(patient.petId, {\n breedCode: petInfo.breed,\n genderCode: petInfo.gender,\n neutered: petInfo.neutered,\n petActivityCode: petInfo.petActivity,\n reproductionStatusCode: petInfo.reproductionStatus,\n idealBodyWeight: {\n weightDate: new Date(),\n bcs: petInfo.bcs,\n measure: petInfo.IBW,\n measureUnit: currentBigMeasurementUnit,\n },\n })\n .pipe(\n /**\n * We can now update the pet inside the patient & return it\n */\n map((pet: Pet) => ({\n patient: {\n ...patient,\n pet,\n },\n })),\n concatMap(({ patient: updatedPatient }) =>\n this.vetService.createConsultation(updatedPatient, buildConsultationApiBody(consultationData, isRenewal)).pipe(\n map((consultation) => ({ patient: { ...updatedPatient, consultation } })),\n catchError((error) => {\n this.store$.dispatch(createCurrentConsultationFail({ error }));\n return EMPTY;\n })\n )\n )\n );\n }\n\n private addWeightToPet(petId: string, weight: Weight): Observable {\n return this.petService.addPetWeight(petId, weight);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { VetService } from '@app/core/services';\nimport { AppState } from '@app/store';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { RcToasterService } from '@rc/ui';\nimport {\n checkForExistingOwner,\n petOwnerFail,\n placeVetSourceOrder,\n placeVetSourceOrderError,\n placeVetSourceOrderSuccess,\n} from '../consultation.actions';\nimport { catchError, map, mergeMap, switchMap, take, tap } from 'rxjs/operators';\nimport { Clinic, Consultation, PetInfo, PetOwner } from '@app/core/models';\nimport { combineLatest, EMPTY, Observable } from 'rxjs';\nimport { CreatePOPopinComponent, CreatePOPopinData } from '@app/shared/components';\nimport { translateKey } from '@app/shared/utils/static-helpers/translate';\nimport { GTMService, mapToolToModule, ShareRecommendationButtonActionGtm, shareRecoTracking } from '@app/core/services/tracking';\nimport { VetFacade } from '@app/store/vet';\nimport { ShareRecommendationFacade } from '@app/store/share-recommendation';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogHelpers } from '@app/shared/utils/static-helpers/dialog-helpers';\n\n@Injectable()\nexport class ConsultationVetSourceEffect {\n public checkForExistingOwner$ = createEffect(() =>\n this.actions$.pipe(\n ofType(checkForExistingOwner),\n switchMap(({ email, owner, clinic, currentConsultation, petInfo }) => {\n if (!owner) {\n return this.dialog\n .open(CreatePOPopinComponent, {\n ...DialogHelpers.defaultConfig(),\n data: {\n email,\n country: clinic.companyAddress?.country,\n },\n })\n .afterClosed()\n .pipe(\n switchMap((res) => {\n if (res) {\n return this.createPetOwner(res?.values).pipe(\n map(() => placeVetSourceOrder({ email, clinic, currentConsultation, petInfo }))\n );\n }\n return EMPTY;\n })\n );\n } else {\n return [placeVetSourceOrder({ email, clinic, petInfo, currentConsultation })];\n }\n })\n )\n );\n\n public placeVetSourceOrder$ = createEffect(() =>\n this.actions$.pipe(\n ofType(placeVetSourceOrder),\n switchMap(({ clinic, currentConsultation, email, petInfo }) => {\n return this.placeVetSourceOrder(email, clinic, petInfo, currentConsultation).pipe(\n mergeMap(() => this.shareRecommendationTracking()),\n map(() => placeVetSourceOrderSuccess()),\n catchError((error: string) => {\n this.store$.dispatch(placeVetSourceOrderError({ error }));\n return EMPTY;\n })\n );\n })\n )\n );\n\n public placeVetSourceOrderSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(placeVetSourceOrderSuccess),\n tap(() => {\n return this.toaster.open({\n text: translateKey(`request_vet_source_sent`),\n type: 'success',\n });\n })\n ),\n { dispatch: false }\n );\n\n public placeVetSourceOrderError$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(placeVetSourceOrderError),\n tap(({ error }) => {\n return this.toaster.open({\n title: translateKey(`error_general_title:`),\n text: error,\n type: 'error',\n });\n })\n ),\n { dispatch: false }\n );\n\n private currentLanguage$ = this.vetFacade.language$;\n private trackingCode$ = this.vetFacade.conversionConfiguration$.pipe(\n map((conversionConfiguration) => conversionConfiguration?.trackingCode)\n );\n private currentTool$ = this.shareRecommendationFacade.selectShareRecommendationData$.pipe(\n map((shareRecommendationData) => shareRecommendationData.tool)\n );\n\n constructor(\n private actions$: Actions,\n private store$: Store,\n private vetService: VetService,\n private toaster: RcToasterService,\n private dialog: MatDialog,\n private vetFacade: VetFacade,\n private shareRecommendationFacade: ShareRecommendationFacade,\n private trackingService: GTMService\n ) {}\n\n private placeVetSourceOrder(\n petOwnerEmail: string,\n clinic: Clinic,\n petInfo: PetInfo,\n currentConsultation: Consultation\n ): Observable {\n return this.vetService.sendVetsourcesConsultation(petOwnerEmail, clinic, petInfo, currentConsultation);\n }\n\n private createPetOwner(petOwnerInfo: PetOwner): Observable {\n return this.vetService.createOwner(petOwnerInfo).pipe(\n catchError((error) => {\n this.store$.dispatch(petOwnerFail({ error }));\n return EMPTY;\n })\n );\n }\n\n private shareRecommendationTracking(): Observable {\n return combineLatest([this.trackingCode$, this.currentLanguage$, this.currentTool$]).pipe(\n take(1),\n tap(([trackingCode, language, tool]) => {\n this.trackingService.sendInteraction(\n shareRecoTracking(ShareRecommendationButtonActionGtm.SEND_ORDER, mapToolToModule(tool), trackingCode, language)\n );\n })\n );\n }\n}\n","import { PetOwnerEffects } from './consultation-pet-owner.effects';\nimport { ConsultationCreateEffects } from './consultation-create.effects';\nimport { ConsultationVetSourceEffect } from './consultation-vetsource.effects';\n\nexport const ConsultationEffects = [ConsultationCreateEffects, PetOwnerEffects, ConsultationVetSourceEffect];\n","import { ActionReducerMap } from '@ngrx/store';\nimport { routerReducer, RouterReducerState } from '@ngrx/router-store';\n\nimport { CoreEffects, coreReducer, CoreState, initialCoreState } from './core';\nimport { initialVetState, VetEffects, VetFacade, legacyVetReducer, VetState } from '@app/store/vet';\nimport { PetState, initialPetState, petReducer, PetEffects } from '@app/store/pet';\nimport { PatientState, initialPatientState, patientReducer, PatientEffects, PatientFacade } from '@app/store/patient';\nimport { consultationReducer, ConsultationState, initialConsultationState } from './consultation';\nimport { ConsultationEffects } from './consultation/effects';\nimport { initialProductsState, ProductsEffects, productsReducer, ProductsState } from './products';\nimport { ProductsFacade } from '@app/store/products/products.facade';\nimport { ConsultationFacade } from '@app/store/consultation/consultation.facade';\nimport { initialShareRecommendationState, ShareRecommendationState } from './share-recommendation/share-recommendation.state';\nimport { ShareRecommendationEffects, ShareRecommendationFacade, shareRecommendationReducer } from './share-recommendation';\nimport { StateNamesEnum } from '@app/shared/utils/enums/state-names.enum';\nimport { AllowanceFacade } from '@app/pages/allowance/store/allowance.facade';\nimport { PetFacade } from './pet/pet.facade';\n\nexport interface AppState {\n router?: RouterReducerState;\n [StateNamesEnum.CORE_STATE_NAME]: CoreState;\n [StateNamesEnum.VET_STATE_NAME]: VetState;\n [StateNamesEnum.PATIENT_STATE_NAME]: PatientState;\n [StateNamesEnum.CONSULTATION_STATE_NAME]: ConsultationState;\n [StateNamesEnum.PRODUCTS_STATE_NAME]: ProductsState;\n [StateNamesEnum.PET_STATE_NAME]: PetState;\n [StateNamesEnum.SHARE_RECOMMENDATION_STATE_NAME]: ShareRecommendationState;\n}\n\nexport const initialAppState: AppState = {\n [StateNamesEnum.CORE_STATE_NAME]: initialCoreState,\n [StateNamesEnum.VET_STATE_NAME]: initialVetState,\n [StateNamesEnum.PATIENT_STATE_NAME]: initialPatientState,\n [StateNamesEnum.CONSULTATION_STATE_NAME]: initialConsultationState,\n [StateNamesEnum.PRODUCTS_STATE_NAME]: initialProductsState,\n [StateNamesEnum.PET_STATE_NAME]: initialPetState,\n [StateNamesEnum.SHARE_RECOMMENDATION_STATE_NAME]: initialShareRecommendationState,\n};\n\nexport function getInitialState(): AppState {\n return initialAppState;\n}\n\nexport const appReducers: ActionReducerMap = {\n router: routerReducer,\n [StateNamesEnum.CORE_STATE_NAME]: coreReducer,\n [StateNamesEnum.VET_STATE_NAME]: legacyVetReducer,\n [StateNamesEnum.PATIENT_STATE_NAME]: patientReducer,\n [StateNamesEnum.CONSULTATION_STATE_NAME]: consultationReducer,\n [StateNamesEnum.PRODUCTS_STATE_NAME]: productsReducer,\n [StateNamesEnum.PET_STATE_NAME]: petReducer,\n [StateNamesEnum.SHARE_RECOMMENDATION_STATE_NAME]: shareRecommendationReducer,\n};\n\nexport const appEffects: any[] = [\n ...CoreEffects,\n ...VetEffects,\n ...PatientEffects,\n ...ConsultationEffects,\n ...ProductsEffects,\n ...PetEffects,\n ShareRecommendationEffects,\n];\n\nexport const appFacades: any[] = [\n VetFacade,\n PatientFacade,\n ProductsFacade,\n ConsultationFacade,\n ShareRecommendationFacade,\n AllowanceFacade,\n PetFacade,\n];\n\nexport const appServices: any[] = [];\n","export const dailyAllowanceFeatureKey = 'dailyAllowance';\n","export const weightManagementFeatureKey = 'weightManagement';\n","export const mufPersonalisedBagFeatureKey = 'mufPersonalisedBag';\n","export const newPetFeatureKey = 'newPet';\n","export const mufStarterKitFeatureKey = 'mufStarterKit';\n","import { renalDetectFeatureKey } from './../pages/renal-detect/store/renal-detect-feature-key';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ActionReducer, MetaReducer, StoreModule } from '@ngrx/store';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreRouterConnectingModule } from '@ngrx/router-store';\nimport { localStorageSync } from 'ngrx-store-localstorage';\n\nimport { appReducers, appEffects, appFacades, appServices } from '.';\nimport { smartRecoFeatureKey } from '@app/pages/smart-reco/store/smart-reco-feature-key';\nimport { consultationFeatureKey } from './consultation';\nimport { allowanceFeatureKey } from '@app/pages/allowance/store/allowance-feature-key';\nimport { dailyAllowanceFeatureKey } from '@app/pages/daily-allowance/store/daily-allowance-feature-key';\nimport { weightManagementFeatureKey } from '@app/pages/weight-management/store/weight-management-feature-key';\nimport { mufPersonalisedBagFeatureKey } from '@app/pages/muf-personalised-bag/store/muf-personalised-bag-feature-key';\nimport { newPetFeatureKey } from '@app/pages/new-pet/store/new-pet-feature-key';\nimport { mufStarterKitFeatureKey } from '@app/pages/muf-starter-kit/store/muf-starter-kit-feature-key';\nimport { StateNamesEnum } from '@app/shared/utils/enums/state-names.enum';\n\n/**\n * Save account data into local storage & rehydrate on app launch\n */\nexport function localStorageSyncReducer(reducer: ActionReducer): ActionReducer {\n return localStorageSync({\n keys: [\n { core: ['localization', 'tool', 'prevTool', 'tool_flow_id'] },\n { vet: ['currentClinicId', 'invitation'] },\n consultationFeatureKey,\n smartRecoFeatureKey,\n renalDetectFeatureKey,\n allowanceFeatureKey,\n dailyAllowanceFeatureKey,\n weightManagementFeatureKey,\n mufPersonalisedBagFeatureKey,\n mufStarterKitFeatureKey,\n newPetFeatureKey,\n {\n products: [\n 'allProductList',\n 'filteredProductList',\n 'filteredProductLength',\n 'filtersValues',\n 'currentViewType',\n 'currentPillar',\n 'selectedCategories',\n 'selectedProducts',\n 'specificSpecieCode',\n 'specificLifestageType',\n ],\n },\n StateNamesEnum.SHARE_RECOMMENDATION_STATE_NAME,\n StateNamesEnum.PET_STATE_NAME,\n ],\n rehydrate: true,\n })(reducer);\n}\n\nexport const metaReducers: Array> = [localStorageSyncReducer];\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n StoreModule.forRoot(appReducers, { metaReducers }),\n EffectsModule.forRoot(appEffects),\n StoreRouterConnectingModule.forRoot(),\n ],\n providers: [...appFacades, ...appServices],\n})\nexport class AppStoreModule {}\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, NgZone, Injectable, Inject, makeEnvironmentProviders, NgModule } from '@angular/core';\nimport * as i2 from '@ngrx/store';\nimport { ActionsSubject, UPDATE, INIT, INITIAL_STATE, StateObservable, ReducerManagerDispatcher } from '@ngrx/store';\nimport { EMPTY, Observable, of, merge, queueScheduler, ReplaySubject } from 'rxjs';\nimport { share, filter, map, concatMap, timeout, debounceTime, catchError, take, takeUntil, switchMap, skip, observeOn, withLatestFrom, scan } from 'rxjs/operators';\nimport { toSignal } from '@angular/core/rxjs-interop';\nconst PERFORM_ACTION = 'PERFORM_ACTION';\nconst REFRESH = 'REFRESH';\nconst RESET = 'RESET';\nconst ROLLBACK = 'ROLLBACK';\nconst COMMIT = 'COMMIT';\nconst SWEEP = 'SWEEP';\nconst TOGGLE_ACTION = 'TOGGLE_ACTION';\nconst SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\nconst JUMP_TO_STATE = 'JUMP_TO_STATE';\nconst JUMP_TO_ACTION = 'JUMP_TO_ACTION';\nconst IMPORT_STATE = 'IMPORT_STATE';\nconst LOCK_CHANGES = 'LOCK_CHANGES';\nconst PAUSE_RECORDING = 'PAUSE_RECORDING';\nclass PerformAction {\n constructor(action, timestamp) {\n this.action = action;\n this.timestamp = timestamp;\n this.type = PERFORM_ACTION;\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n }\n}\nclass Refresh {\n constructor() {\n this.type = REFRESH;\n }\n}\nclass Reset {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = RESET;\n }\n}\nclass Rollback {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = ROLLBACK;\n }\n}\nclass Commit {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = COMMIT;\n }\n}\nclass Sweep {\n constructor() {\n this.type = SWEEP;\n }\n}\nclass ToggleAction {\n constructor(id) {\n this.id = id;\n this.type = TOGGLE_ACTION;\n }\n}\nclass SetActionsActive {\n constructor(start, end, active = true) {\n this.start = start;\n this.end = end;\n this.active = active;\n this.type = SET_ACTIONS_ACTIVE;\n }\n}\nclass JumpToState {\n constructor(index) {\n this.index = index;\n this.type = JUMP_TO_STATE;\n }\n}\nclass JumpToAction {\n constructor(actionId) {\n this.actionId = actionId;\n this.type = JUMP_TO_ACTION;\n }\n}\nclass ImportState {\n constructor(nextLiftedState) {\n this.nextLiftedState = nextLiftedState;\n this.type = IMPORT_STATE;\n }\n}\nclass LockChanges {\n constructor(status) {\n this.status = status;\n this.type = LOCK_CHANGES;\n }\n}\nclass PauseRecording {\n constructor(status) {\n this.status = status;\n this.type = PAUSE_RECORDING;\n }\n}\n\n/**\n * Chrome extension documentation\n * @see https://github.com/reduxjs/redux-devtools/blob/main/extension/docs/API/Arguments.md\n * Firefox extension documentation\n * @see https://github.com/zalmoxisus/redux-devtools-extension/blob/master/docs/API/Arguments.md\n */\nclass StoreDevtoolsConfig {\n constructor() {\n /**\n * Maximum allowed actions to be stored in the history tree (default: `false`)\n */\n this.maxAge = false;\n }\n}\nconst STORE_DEVTOOLS_CONFIG = new InjectionToken('@ngrx/store-devtools Options');\n/**\n * Used to provide a `StoreDevtoolsConfig` for the store-devtools.\n */\nconst INITIAL_OPTIONS = new InjectionToken('@ngrx/store-devtools Initial Config');\nfunction noMonitor() {\n return null;\n}\nconst DEFAULT_NAME = 'NgRx Store DevTools';\nfunction createConfig(optionsInput) {\n const DEFAULT_OPTIONS = {\n maxAge: false,\n monitor: noMonitor,\n actionSanitizer: undefined,\n stateSanitizer: undefined,\n name: DEFAULT_NAME,\n serialize: false,\n logOnly: false,\n autoPause: false,\n trace: false,\n traceLimit: 75,\n // Add all features explicitly. This prevent buggy behavior for\n // options like \"lock\" which might otherwise not show up.\n features: {\n pause: true,\n // Start/pause recording of dispatched actions\n lock: true,\n // Lock/unlock dispatching actions and side effects\n persist: true,\n // Persist states on page reloading\n export: true,\n // Export history of actions in a file\n import: 'custom',\n // Import history of actions from a file\n jump: true,\n // Jump back and forth (time travelling)\n skip: true,\n // Skip (cancel) actions\n reorder: true,\n // Drag and drop actions in the history list\n dispatch: true,\n // Dispatch custom actions or action creators\n test: true // Generate tests for the selected actions\n },\n connectInZone: false\n };\n const options = typeof optionsInput === 'function' ? optionsInput() : optionsInput;\n const logOnly = options.logOnly ? {\n pause: true,\n export: true,\n test: true\n } : false;\n const features = options.features || logOnly || DEFAULT_OPTIONS.features;\n if (features.import === true) {\n features.import = 'custom';\n }\n const config = Object.assign({}, DEFAULT_OPTIONS, {\n features\n }, options);\n if (config.maxAge && config.maxAge < 2) {\n throw new Error(`Devtools 'maxAge' cannot be less than 2, got ${config.maxAge}`);\n }\n return config;\n}\nfunction difference(first, second) {\n return first.filter(item => second.indexOf(item) < 0);\n}\n/**\n * Provides an app's view into the state of the lifted store.\n */\nfunction unliftState(liftedState) {\n const {\n computedStates,\n currentStateIndex\n } = liftedState;\n // At start up NgRx dispatches init actions,\n // When these init actions are being filtered out by the predicate or safe/block list options\n // we don't have a complete computed states yet.\n // At this point it could happen that we're out of bounds, when this happens we fall back to the last known state\n if (currentStateIndex >= computedStates.length) {\n const {\n state\n } = computedStates[computedStates.length - 1];\n return state;\n }\n const {\n state\n } = computedStates[currentStateIndex];\n return state;\n}\nfunction unliftAction(liftedState) {\n return liftedState.actionsById[liftedState.nextActionId - 1];\n}\n/**\n * Lifts an app's action into an action on the lifted store.\n */\nfunction liftAction(action) {\n return new PerformAction(action, +Date.now());\n}\n/**\n * Sanitizes given actions with given function.\n */\nfunction sanitizeActions(actionSanitizer, actions) {\n return Object.keys(actions).reduce((sanitizedActions, actionIdx) => {\n const idx = Number(actionIdx);\n sanitizedActions[idx] = sanitizeAction(actionSanitizer, actions[idx], idx);\n return sanitizedActions;\n }, {});\n}\n/**\n * Sanitizes given action with given function.\n */\nfunction sanitizeAction(actionSanitizer, action, actionIdx) {\n return {\n ...action,\n action: actionSanitizer(action.action, actionIdx)\n };\n}\n/**\n * Sanitizes given states with given function.\n */\nfunction sanitizeStates(stateSanitizer, states) {\n return states.map((computedState, idx) => ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error\n }));\n}\n/**\n * Sanitizes given state with given function.\n */\nfunction sanitizeState(stateSanitizer, state, stateIdx) {\n return stateSanitizer(state, stateIdx);\n}\n/**\n * Read the config and tell if actions should be filtered\n */\nfunction shouldFilterActions(config) {\n return config.predicate || config.actionsSafelist || config.actionsBlocklist;\n}\n/**\n * Return a full filtered lifted state\n */\nfunction filterLiftedState(liftedState, predicate, safelist, blocklist) {\n const filteredStagedActionIds = [];\n const filteredActionsById = {};\n const filteredComputedStates = [];\n liftedState.stagedActionIds.forEach((id, idx) => {\n const liftedAction = liftedState.actionsById[id];\n if (!liftedAction) return;\n if (idx && isActionFiltered(liftedState.computedStates[idx], liftedAction, predicate, safelist, blocklist)) {\n return;\n }\n filteredActionsById[id] = liftedAction;\n filteredStagedActionIds.push(id);\n filteredComputedStates.push(liftedState.computedStates[idx]);\n });\n return {\n ...liftedState,\n stagedActionIds: filteredStagedActionIds,\n actionsById: filteredActionsById,\n computedStates: filteredComputedStates\n };\n}\n/**\n * Return true is the action should be ignored\n */\nfunction isActionFiltered(state, action, predicate, safelist, blockedlist) {\n const predicateMatch = predicate && !predicate(state, action.action);\n const safelistMatch = safelist && !action.action.type.match(safelist.map(s => escapeRegExp(s)).join('|'));\n const blocklistMatch = blockedlist && action.action.type.match(blockedlist.map(s => escapeRegExp(s)).join('|'));\n return predicateMatch || safelistMatch || blocklistMatch;\n}\n/**\n * Return string with escaped RegExp special characters\n * https://stackoverflow.com/a/6969486/1337347\n */\nfunction escapeRegExp(s) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nfunction injectZoneConfig(connectInZone) {\n const ngZone = connectInZone ? inject(NgZone) : null;\n return {\n ngZone,\n connectInZone\n };\n}\nlet DevtoolsDispatcher = /*#__PURE__*/(() => {\n class DevtoolsDispatcher extends ActionsSubject {\n /** @nocollapse */static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵDevtoolsDispatcher_BaseFactory;\n return function DevtoolsDispatcher_Factory(t) {\n return (ɵDevtoolsDispatcher_BaseFactory || (ɵDevtoolsDispatcher_BaseFactory = i0.ɵɵgetInheritedFactory(DevtoolsDispatcher)))(t || DevtoolsDispatcher);\n };\n })();\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DevtoolsDispatcher,\n factory: DevtoolsDispatcher.ɵfac\n });\n }\n }\n return DevtoolsDispatcher;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION'\n};\nconst REDUX_DEVTOOLS_EXTENSION = new InjectionToken('@ngrx/store-devtools Redux Devtools Extension');\nlet DevtoolsExtension = /*#__PURE__*/(() => {\n class DevtoolsExtension {\n constructor(devtoolsExtension, config, dispatcher) {\n this.config = config;\n this.dispatcher = dispatcher;\n this.zoneConfig = injectZoneConfig(this.config.connectInZone);\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n notify(action, state) {\n if (!this.devtoolsExtension) {\n return;\n }\n // Check to see if the action requires a full update of the liftedState.\n // If it is a simple action generated by the user's app and the recording\n // is not locked/paused, only send the action and the current state (fast).\n //\n // A full liftedState update (slow: serializes the entire liftedState) is\n // only required when:\n // a) redux-devtools-extension fires the @@Init action (ignored by\n // @ngrx/store-devtools)\n // b) an action is generated by an @ngrx module (e.g. @ngrx/effects/init\n // or @ngrx/store/update-reducers)\n // c) the state has been recomputed due to time-traveling\n // d) any action that is not a PerformAction to err on the side of\n // caution.\n if (action.type === PERFORM_ACTION) {\n if (state.isLocked || state.isPaused) {\n return;\n }\n const currentState = unliftState(state);\n if (shouldFilterActions(this.config) && isActionFiltered(currentState, action, this.config.predicate, this.config.actionsSafelist, this.config.actionsBlocklist)) {\n return;\n }\n const sanitizedState = this.config.stateSanitizer ? sanitizeState(this.config.stateSanitizer, currentState, state.currentStateIndex) : currentState;\n const sanitizedAction = this.config.actionSanitizer ? sanitizeAction(this.config.actionSanitizer, action, state.nextActionId) : action;\n this.sendToReduxDevtools(() => this.extensionConnection.send(sanitizedAction, sanitizedState));\n } else {\n // Requires full state update\n const sanitizedLiftedState = {\n ...state,\n stagedActionIds: state.stagedActionIds,\n actionsById: this.config.actionSanitizer ? sanitizeActions(this.config.actionSanitizer, state.actionsById) : state.actionsById,\n computedStates: this.config.stateSanitizer ? sanitizeStates(this.config.stateSanitizer, state.computedStates) : state.computedStates\n };\n this.sendToReduxDevtools(() => this.devtoolsExtension.send(null, sanitizedLiftedState, this.getExtensionConfig(this.config)));\n }\n }\n createChangesObservable() {\n if (!this.devtoolsExtension) {\n return EMPTY;\n }\n return new Observable(subscriber => {\n const connection = this.zoneConfig.connectInZone ?\n // To reduce change detection cycles, we need to run the `connect` method\n // outside of the Angular zone. The `connect` method adds a `message`\n // event listener to communicate with an extension using `window.postMessage`\n // and handle message events.\n this.zoneConfig.ngZone.runOutsideAngular(() => this.devtoolsExtension.connect(this.getExtensionConfig(this.config))) : this.devtoolsExtension.connect(this.getExtensionConfig(this.config));\n this.extensionConnection = connection;\n connection.init();\n connection.subscribe(change => subscriber.next(change));\n return connection.unsubscribe;\n });\n }\n createActionStreams() {\n // Listens to all changes\n const changes$ = this.createChangesObservable().pipe(share());\n // Listen for the start action\n const start$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.START));\n // Listen for the stop action\n const stop$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.STOP));\n // Listen for lifted actions\n const liftedActions$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.DISPATCH), map(change => this.unwrapAction(change.payload)), concatMap(action => {\n if (action.type === IMPORT_STATE) {\n // State imports may happen in two situations:\n // 1. Explicitly by user\n // 2. User activated the \"persist state accross reloads\" option\n // and now the state is imported during reload.\n // Because of option 2, we need to give possible\n // lazy loaded reducers time to instantiate.\n // As soon as there is no UPDATE action within 1 second,\n // it is assumed that all reducers are loaded.\n return this.dispatcher.pipe(filter(action => action.type === UPDATE), timeout(1000), debounceTime(1000), map(() => action), catchError(() => of(action)), take(1));\n } else {\n return of(action);\n }\n }));\n // Listen for unlifted actions\n const actions$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.ACTION), map(change => this.unwrapAction(change.payload)));\n const actionsUntilStop$ = actions$.pipe(takeUntil(stop$));\n const liftedUntilStop$ = liftedActions$.pipe(takeUntil(stop$));\n this.start$ = start$.pipe(takeUntil(stop$));\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(switchMap(() => actionsUntilStop$));\n this.liftedActions$ = this.start$.pipe(switchMap(() => liftedUntilStop$));\n }\n unwrapAction(action) {\n // indirect eval according to https://esbuild.github.io/content-types/#direct-eval\n return typeof action === 'string' ? (0, eval)(`(${action})`) : action;\n }\n getExtensionConfig(config) {\n const extensionOptions = {\n name: config.name,\n features: config.features,\n serialize: config.serialize,\n autoPause: config.autoPause ?? false,\n trace: config.trace ?? false,\n traceLimit: config.traceLimit ?? 75\n // The action/state sanitizers are not added to the config\n // because sanitation is done in this class already.\n // It is done before sending it to the devtools extension for consistency:\n // - If we call extensionConnection.send(...),\n // the extension would call the sanitizers.\n // - If we call devtoolsExtension.send(...) (aka full state update),\n // the extension would NOT call the sanitizers, so we have to do it ourselves.\n };\n if (config.maxAge !== false /* support === 0 */) {\n extensionOptions.maxAge = config.maxAge;\n }\n return extensionOptions;\n }\n sendToReduxDevtools(send) {\n try {\n send();\n } catch (err) {\n console.warn('@ngrx/store-devtools: something went wrong inside the redux devtools', err);\n }\n }\n /** @nocollapse */\n static {\n this.ɵfac = function DevtoolsExtension_Factory(t) {\n return new (t || DevtoolsExtension)(i0.ɵɵinject(REDUX_DEVTOOLS_EXTENSION), i0.ɵɵinject(STORE_DEVTOOLS_CONFIG), i0.ɵɵinject(DevtoolsDispatcher));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DevtoolsExtension,\n factory: DevtoolsExtension.ɵfac\n });\n }\n }\n return DevtoolsExtension;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst INIT_ACTION = {\n type: INIT\n};\nconst RECOMPUTE = '@ngrx/store-devtools/recompute';\nconst RECOMPUTE_ACTION = {\n type: RECOMPUTE\n};\n/**\n * Computes the next entry in the log by applying an action.\n */\nfunction computeNextEntry(reducer, action, state, error, errorHandler) {\n if (error) {\n return {\n state,\n error: 'Interrupted by an error up the chain'\n };\n }\n let nextState = state;\n let nextError;\n try {\n nextState = reducer(state, action);\n } catch (err) {\n nextError = err.toString();\n errorHandler.handleError(err);\n }\n return {\n state: nextState,\n error: nextError\n };\n}\n/**\n * Runs the reducer on invalidated actions to get a fresh computation log.\n */\nfunction recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (minInvalidatedStateIndex >= computedStates.length && computedStates.length === stagedActionIds.length) {\n return computedStates;\n }\n const nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n // If the recording is paused, recompute all states up until the pause state,\n // else recompute all states.\n const lastIncludedActionId = stagedActionIds.length - (isPaused ? 1 : 0);\n for (let i = minInvalidatedStateIndex; i < lastIncludedActionId; i++) {\n const actionId = stagedActionIds[i];\n const action = actionsById[actionId].action;\n const previousEntry = nextComputedStates[i - 1];\n const previousState = previousEntry ? previousEntry.state : committedState;\n const previousError = previousEntry ? previousEntry.error : undefined;\n const shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n const entry = shouldSkip ? previousEntry : computeNextEntry(reducer, action, previousState, previousError, errorHandler);\n nextComputedStates.push(entry);\n }\n // If the recording is paused, the last state will not be recomputed,\n // because it's essentially not part of the state history.\n if (isPaused) {\n nextComputedStates.push(computedStates[computedStates.length - 1]);\n }\n return nextComputedStates;\n}\nfunction liftInitialState(initialCommittedState, monitorReducer) {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: {\n 0: liftAction(INIT_ACTION)\n },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: [],\n isLocked: false,\n isPaused: false\n };\n}\n/**\n * Creates a history state reducer from an app's reducer.\n */\nfunction liftReducerWith(initialCommittedState, initialLiftedState, errorHandler, monitorReducer, options = {}) {\n /**\n * Manages how the history actions modify the history state.\n */\n return reducer => (liftedState, liftedAction) => {\n let {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n } = liftedState || initialLiftedState;\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n function commitExcessActions(n) {\n // Auto-commits n-number of excess actions.\n let excess = n;\n let idsToDelete = stagedActionIds.slice(1, excess + 1);\n for (let i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n } else {\n delete actionsById[idsToDelete[i]];\n }\n }\n skippedActionIds = skippedActionIds.filter(id => idsToDelete.indexOf(id) === -1);\n stagedActionIds = [0, ...stagedActionIds.slice(excess + 1)];\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex = currentStateIndex > excess ? currentStateIndex - excess : 0;\n }\n function commitChanges() {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n }\n // By default, aggressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n let minInvalidatedStateIndex = 0;\n switch (liftedAction.type) {\n case LOCK_CHANGES:\n {\n isLocked = liftedAction.status;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case PAUSE_RECORDING:\n {\n isPaused = liftedAction.status;\n if (isPaused) {\n // Add a pause action to signal the devtools-user the recording is paused.\n // The corresponding state will be overwritten on each update to always contain\n // the latest state (see Actions.PERFORM_ACTION).\n stagedActionIds = [...stagedActionIds, nextActionId];\n actionsById[nextActionId] = new PerformAction({\n type: '@ngrx/devtools/pause'\n }, +Date.now());\n nextActionId++;\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = computedStates.concat(computedStates[computedStates.length - 1]);\n if (currentStateIndex === stagedActionIds.length - 2) {\n currentStateIndex++;\n }\n minInvalidatedStateIndex = Infinity;\n } else {\n commitChanges();\n }\n break;\n }\n case RESET:\n {\n // Get back to the state the store was created with.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case COMMIT:\n {\n commitChanges();\n break;\n }\n case ROLLBACK:\n {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = {\n 0: liftAction(INIT_ACTION)\n };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case TOGGLE_ACTION:\n {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const {\n id: actionId\n } = liftedAction;\n const index = skippedActionIds.indexOf(actionId);\n if (index === -1) {\n skippedActionIds = [actionId, ...skippedActionIds];\n } else {\n skippedActionIds = skippedActionIds.filter(id => id !== actionId);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId);\n break;\n }\n case SET_ACTIONS_ACTIVE:\n {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const {\n start,\n end,\n active\n } = liftedAction;\n const actionIds = [];\n for (let i = start; i < end; i++) actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n } else {\n skippedActionIds = [...skippedActionIds, ...actionIds];\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case JUMP_TO_STATE:\n {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case JUMP_TO_ACTION:\n {\n // Jumps to a corresponding state to a specific action.\n // Useful when filtering actions.\n const index = stagedActionIds.indexOf(liftedAction.actionId);\n if (index !== -1) currentStateIndex = index;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case SWEEP:\n {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(currentStateIndex, stagedActionIds.length - 1);\n break;\n }\n case PERFORM_ACTION:\n {\n // Ignore action and return state as is if recording is locked\n if (isLocked) {\n return liftedState || initialLiftedState;\n }\n if (isPaused || liftedState && isActionFiltered(liftedState.computedStates[currentStateIndex], liftedAction, options.predicate, options.actionsSafelist, options.actionsBlocklist)) {\n // If recording is paused or if the action should be ignored, overwrite the last state\n // (corresponds to the pause action) and keep everything else as is.\n // This way, the app gets the new current state while the devtools\n // do not record another action.\n const lastState = computedStates[computedStates.length - 1];\n computedStates = [...computedStates.slice(0, -1), computeNextEntry(reducer, liftedAction.action, lastState.state, lastState.error, errorHandler)];\n minInvalidatedStateIndex = Infinity;\n break;\n }\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n const actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n stagedActionIds = [...stagedActionIds, actionId];\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case IMPORT_STATE:\n {\n // Completely replace everything.\n ({\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n } = liftedAction.nextLiftedState);\n break;\n }\n case INIT:\n {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n case UPDATE:\n {\n const stateHasErrors = computedStates.filter(state => state.error).length > 0;\n if (stateHasErrors) {\n // Recompute all states\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n } else {\n // If not paused/locked, add a new action to signal devtools-user\n // that there was a reducer update.\n if (!isPaused && !isLocked) {\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n // Add a new action to only recompute state\n const actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(liftedAction, +Date.now());\n stagedActionIds = [...stagedActionIds, actionId];\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n }\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(cmp => ({\n ...cmp,\n state: reducer(cmp.state, RECOMPUTE_ACTION)\n }));\n currentStateIndex = stagedActionIds.length - 1;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n commitExcessActions(stagedActionIds.length - options.maxAge);\n }\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n default:\n {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n monitorState = monitorReducer(monitorState, liftedAction);\n return {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused\n };\n };\n}\nlet StoreDevtools = /*#__PURE__*/(() => {\n class StoreDevtools {\n constructor(dispatcher, actions$, reducers$, extension, scannedActions, errorHandler, initialState, config) {\n const liftedInitialState = liftInitialState(initialState, config.monitor);\n const liftReducer = liftReducerWith(initialState, liftedInitialState, errorHandler, config.monitor, config);\n const liftedAction$ = merge(merge(actions$.asObservable().pipe(skip(1)), extension.actions$).pipe(map(liftAction)), dispatcher, extension.liftedActions$).pipe(observeOn(queueScheduler));\n const liftedReducer$ = reducers$.pipe(map(liftReducer));\n const zoneConfig = injectZoneConfig(config.connectInZone);\n const liftedStateSubject = new ReplaySubject(1);\n this.liftedStateSubscription = liftedAction$.pipe(withLatestFrom(liftedReducer$),\n // The extension would post messages back outside of the Angular zone\n // because we call `connect()` wrapped with `runOutsideAngular`. We run change\n // detection only once at the end after all the required asynchronous tasks have\n // been processed (for instance, `setInterval` scheduled by the `timeout` operator).\n // We have to re-enter the Angular zone before the `scan` since it runs the reducer\n // which must be run within the Angular zone.\n emitInZone(zoneConfig), scan(({\n state: liftedState\n }, [action, reducer]) => {\n let reducedLiftedState = reducer(liftedState, action);\n // On full state update\n // If we have actions filters, we must filter completely our lifted state to be sync with the extension\n if (action.type !== PERFORM_ACTION && shouldFilterActions(config)) {\n reducedLiftedState = filterLiftedState(reducedLiftedState, config.predicate, config.actionsSafelist, config.actionsBlocklist);\n }\n // Extension should be sent the sanitized lifted state\n extension.notify(action, reducedLiftedState);\n return {\n state: reducedLiftedState,\n action\n };\n }, {\n state: liftedInitialState,\n action: null\n })).subscribe(({\n state,\n action\n }) => {\n liftedStateSubject.next(state);\n if (action.type === PERFORM_ACTION) {\n const unliftedAction = action.action;\n scannedActions.next(unliftedAction);\n }\n });\n this.extensionStartSubscription = extension.start$.pipe(emitInZone(zoneConfig)).subscribe(() => {\n this.refresh();\n });\n const liftedState$ = liftedStateSubject.asObservable();\n const state$ = liftedState$.pipe(map(unliftState));\n Object.defineProperty(state$, 'state', {\n value: toSignal(state$, {\n manualCleanup: true,\n requireSync: true\n })\n });\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n ngOnDestroy() {\n // Even though the store devtools plugin is recommended to be\n // used only in development mode, it can still cause a memory leak\n // in microfrontend applications that are being created and destroyed\n // multiple times during development. This results in excessive memory\n // consumption, as it prevents entire apps from being garbage collected.\n this.liftedStateSubscription.unsubscribe();\n this.extensionStartSubscription.unsubscribe();\n }\n dispatch(action) {\n this.dispatcher.next(action);\n }\n next(action) {\n this.dispatcher.next(action);\n }\n error(error) {}\n complete() {}\n performAction(action) {\n this.dispatch(new PerformAction(action, +Date.now()));\n }\n refresh() {\n this.dispatch(new Refresh());\n }\n reset() {\n this.dispatch(new Reset(+Date.now()));\n }\n rollback() {\n this.dispatch(new Rollback(+Date.now()));\n }\n commit() {\n this.dispatch(new Commit(+Date.now()));\n }\n sweep() {\n this.dispatch(new Sweep());\n }\n toggleAction(id) {\n this.dispatch(new ToggleAction(id));\n }\n jumpToAction(actionId) {\n this.dispatch(new JumpToAction(actionId));\n }\n jumpToState(index) {\n this.dispatch(new JumpToState(index));\n }\n importState(nextLiftedState) {\n this.dispatch(new ImportState(nextLiftedState));\n }\n lockChanges(status) {\n this.dispatch(new LockChanges(status));\n }\n pauseRecording(status) {\n this.dispatch(new PauseRecording(status));\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreDevtools_Factory(t) {\n return new (t || StoreDevtools)(i0.ɵɵinject(DevtoolsDispatcher), i0.ɵɵinject(i2.ActionsSubject), i0.ɵɵinject(i2.ReducerObservable), i0.ɵɵinject(DevtoolsExtension), i0.ɵɵinject(i2.ScannedActionsSubject), i0.ɵɵinject(i0.ErrorHandler), i0.ɵɵinject(INITIAL_STATE), i0.ɵɵinject(STORE_DEVTOOLS_CONFIG));\n };\n }\n /** @nocollapse */\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StoreDevtools,\n factory: StoreDevtools.ɵfac\n });\n }\n }\n return StoreDevtools;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * If the devtools extension is connected out of the Angular zone,\n * this operator will emit all events within the zone.\n */\nfunction emitInZone({\n ngZone,\n connectInZone\n}) {\n return source => connectInZone ? new Observable(subscriber => source.subscribe({\n next: value => ngZone.run(() => subscriber.next(value)),\n error: error => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete())\n })) : source;\n}\nconst IS_EXTENSION_OR_MONITOR_PRESENT = new InjectionToken('@ngrx/store-devtools Is Devtools Extension or Monitor Present');\nfunction createIsExtensionOrMonitorPresent(extension, config) {\n return Boolean(extension) || config.monitor !== noMonitor;\n}\nfunction createReduxDevtoolsExtension() {\n const extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n if (typeof window === 'object' && typeof window[extensionKey] !== 'undefined') {\n return window[extensionKey];\n } else {\n return null;\n }\n}\n/**\n * Provides developer tools and instrumentation for `Store`.\n *\n * @usageNotes\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideStoreDevtools({\n * maxAge: 25,\n * logOnly: !isDevMode(),\n * }),\n * ],\n * });\n * ```\n */\nfunction provideStoreDevtools(options = {}) {\n return makeEnvironmentProviders([DevtoolsExtension, DevtoolsDispatcher, StoreDevtools, {\n provide: INITIAL_OPTIONS,\n useValue: options\n }, {\n provide: IS_EXTENSION_OR_MONITOR_PRESENT,\n deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],\n useFactory: createIsExtensionOrMonitorPresent\n }, {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: createReduxDevtoolsExtension\n }, {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: createConfig\n }, {\n provide: StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable\n }, {\n provide: ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher\n }]);\n}\nfunction createStateObservable(devtools) {\n return devtools.state;\n}\nlet StoreDevtoolsModule = /*#__PURE__*/(() => {\n class StoreDevtoolsModule {\n static instrument(options = {}) {\n return {\n ngModule: StoreDevtoolsModule,\n providers: [provideStoreDevtools(options)]\n };\n }\n /** @nocollapse */\n static {\n this.ɵfac = function StoreDevtoolsModule_Factory(t) {\n return new (t || StoreDevtoolsModule)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StoreDevtoolsModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return StoreDevtoolsModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INITIAL_OPTIONS, RECOMPUTE, REDUX_DEVTOOLS_EXTENSION, StoreDevtools, StoreDevtoolsConfig, StoreDevtoolsModule, provideStoreDevtools };\n","import { IconName } from '@app/shared/utils/icon/icons';\nimport { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Helper } from '@app/shared/utils';\n\n@Component({\n selector: 'app-browser-deprecation',\n templateUrl: './browser-deprecation.component.html',\n styleUrls: ['./browser-deprecation.component.scss'],\n})\nexport class BrowserDeprecationComponent implements OnInit {\n isIe = Helper.isInternetExplorer();\n isBrowserDeprecated = Helper.isBrowserDeprecated();\n public readonly IconName = IconName;\n\n links = [\n {\n name: 'Microsoft Edge',\n href: 'https://www.microsoft.com/edge',\n icon: './assets/icons/Edge.svg',\n },\n {\n name: 'Google Chrome',\n href: 'https://www.google.com/chrome',\n icon: './assets/icons/Chrome.svg',\n },\n {\n name: 'Mozilla Firefox',\n href: 'https://www.mozilla.org/new/firefox/',\n icon: './assets/icons/Mozilla.svg',\n },\n ];\n\n svgLinks = {\n atRisk: './assets/icons/atRisk.svg',\n };\n\n constructor(private _router: Router) {}\n\n ngOnInit() {\n if (!this.isIe && !this.isBrowserDeprecated) {\n this._router.navigate(['/']).then();\n }\n }\n}\n","
\n
\n \"\"\n
\n
Internet Explorer will no longer be supported.
\n
\n Internet Explorer will soon reach end of support by Microsoft. For a better experience we recommend you to switch to another\n browser!\n
\n
\n
\n
\n
\n \"\"\n {{ link.name }}\n \n
\n
\n
\n
\n
\n \"\"\n
\n
Your browser version is not supported on Vet Services.
\n
\n For a better experience, we recommend updating your browser to the latest version or using an other browser !\n
\n
\n
\n
\n
\n \"\"\n {{ link.name }}\n \n
\n
\n
\n","/*\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Logger } from '@app/core/services';\nimport { CoreFacade } from '@app/store/core/core.facade';\nimport { OKTA_AUTH } from '@okta/okta-angular';\nimport { OktaAuth } from '@okta/okta-auth-js';\n\n@Component({\n template: `
{{ error }}
`,\n})\nexport class OktaCallbackComponent implements OnInit {\n error: string;\n\n constructor(\n @Inject(OKTA_AUTH) private oktaAuth: OktaAuth,\n private router: Router,\n private coreFacade: CoreFacade,\n private logger: Logger\n ) {}\n\n async ngOnInit() {\n /**\n * Handles the response from Okta and parses tokens.\n */\n this.coreFacade.toggleLoader(true);\n return this.oktaAuth\n .handleLoginRedirect()\n .then(() => {\n /**\n * Navigate back to the saved uri, or root of application.\n */\n let path = '/';\n const oktaOriginalUri = this.oktaAuth.getOriginalUri();\n const localStorageOriginalUrl = localStorage.getItem('redirectUrl');\n if (oktaOriginalUri) {\n path = oktaOriginalUri ? new URL(oktaOriginalUri)?.pathname : '/';\n } else if (localStorageOriginalUrl) {\n path = localStorageOriginalUrl;\n localStorage.removeItem('redirectUrl');\n }\n this.router.navigateByUrl(path);\n })\n .catch((error: Error) => {\n this.coreFacade.toggleLoader(false);\n this.logger.error(error);\n this.router.navigateByUrl('/');\n });\n }\n}\n","import { startMufPersonalisedBag } from './../../muf-personalised-bag/store/actions/muf-personalised-bag-steps.actions';\nimport { setTool } from '@app/store/core';\nimport {\n resetConsultationData,\n setConsultationLastConsultation,\n setConsultationPatient,\n} from '@app/store/consultation/consultation.actions';\nimport { getConsultationsWithoutVisit, resetPet } from '@app/store/pet/pet.actions';\nimport { startRenalDetect } from '@app/pages/renal-detect/store/actions/renal-detect-steps.actions';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Consultation, Patient, Pet } from '@app/core/models';\nimport { ConsultationApiData } from '@app/core/models/consultation-api-data';\nimport {\n ActionCommunicationService,\n EnumsService,\n LoaderService,\n ObservablesLayerService,\n PetCommunicationService,\n VetService,\n} from '@app/core/services';\nimport { MarketService } from '@app/core/services/utils/localization/market.service';\nimport { Logger } from '@app/core/services/utils/logger';\nimport { startSmartReco } from '@app/pages/smart-reco/store/actions/smart-reco-steps.actions';\nimport { ActiveProgramPopinComponent, ContentWrapperSizes } from '@app/shared/components';\nimport { Constants, Helper, SectionType, Tool } from '@app/shared/utils';\nimport { ClinicFeature } from '@app/shared/utils/enums/feature.enum';\nimport { DataSubscriber } from '@app/shared/utils/static-helpers/data-subscriber';\nimport { AppState } from '@app/store';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs';\nimport { mergeMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { startDailyAllowance } from '@app/pages/daily-allowance/store/actions/daily-allowance-steps.actions';\nimport { startWeightManagement } from '@app/pages/weight-management/store/actions/weight-management-steps.actions';\nimport { GTMService, startConsultationExistingPatientGtm } from '@app/core/services/tracking';\nimport { WeightManagementStep } from '@app/pages/weight-management/weight-management-step';\nimport { CoreFacade } from '@app/store/core/core.facade';\nimport { RCAlertType } from '@rc/ui';\nimport { getMUFAvailabilityError, getRDAvailabilityError, getWLPAvailabilityError } from '@app/shared/utils/static-helpers/patient-helper';\nimport { resetProductsData } from '@app/store/products';\nimport { resetShareRecommendationData } from '@app/store/share-recommendation';\nimport { AppRoutes } from '@app/shared/utils/enums/routes.enum';\nimport { MatDialog } from '@angular/material/dialog';\n\nexport interface DropdownOption {\n id: string;\n icon: string;\n title: string;\n disabled: boolean;\n}\n\n@Component({\n selector: 'app-pet-page',\n templateUrl: './pet-page.component.html',\n styleUrls: ['./pet-page.component.scss'],\n providers: [PetCommunicationService],\n})\nexport class PetPageComponent implements OnInit, OnDestroy {\n public contentWrapperSizes = ContentWrapperSizes;\n patientId: string;\n patient: Patient;\n consultations: Consultation[];\n alertType = RCAlertType;\n // Childs data\n lastConsultation: Consultation;\n // Tabs\n menuOptions = [\n {\n id: 'health',\n link: 'health',\n enabled: true,\n short: $localize`:@@tab_health_short:`,\n long: $localize`:@@tab_health_long:`,\n },\n {\n id: 'weight-management',\n link: 'weight-management',\n enabled: true,\n short: $localize`:@@tab_weight_short:`,\n long: $localize`:@@tab_weight_long:`,\n },\n {\n id: 'pet-profile',\n link: 'pet-profile',\n enabled: true,\n short: $localize`:@@tab_profile_short:`,\n long: $localize`:@@tab_profile_long:`,\n },\n ];\n currentTab = 'pet-profile';\n // pet-profile-header\n dropdownSelectedOption: DropdownOption;\n dropdownIsOpen$: BehaviorSubject = new BehaviorSubject(false);\n selectables: DropdownOption[] = [];\n buttonTitle = $localize`:@@dropdown-list_title:`;\n /** Properties **/\n private _destroyed$ = new Subject();\n private _paginationType = SectionType;\n\n /** Initializer **/\n constructor(\n private router: Router,\n private activateRoute: ActivatedRoute,\n private marketService: MarketService,\n private enumsService: EnumsService,\n private loaderService: LoaderService,\n private trackingService: GTMService,\n private petCommunicationService: PetCommunicationService,\n private actionCommunicationService: ActionCommunicationService,\n private vetService: VetService,\n private observablesLayerService: ObservablesLayerService,\n private coreFacade: CoreFacade,\n private dialog: MatDialog,\n private logger: Logger,\n private store$: Store\n ) {}\n\n /** Life Cycle **/\n ngOnInit() {\n const url = this.router.url;\n const decomposedUrl = url.match(/[\\/][^\\?\\/]+/g).map((e) => e.substring(1));\n this.currentTab = decomposedUrl[2];\n\n this.activateRoute.parent.params.subscribe((params) => {\n this.patientId = params['patientID'];\n this._fetchPatientAndConsultation(this.patientId);\n this._fetchMoreData();\n });\n\n this.petCommunicationService.petUpdates.pipe(takeUntil(this._destroyed$)).subscribe(this._onPetUpdate.bind(this));\n\n this.actionCommunicationService.showErrorSubject.pipe(takeUntil(this._destroyed$)).subscribe((message: string) => {\n this._handleError(message);\n });\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n this.coreFacade.resetAlerts();\n this.store$.dispatch(resetPet());\n }\n\n onDropdownClick(): void {\n this.dropdownIsOpen$.next(!this.dropdownIsOpen$.value);\n }\n\n onDropdownSelect($event: any): void {\n this.dropdownSelectedOption = $event;\n this.dropdownIsOpen$.next(false);\n if (\n this.lastConsultation &&\n this.lastConsultation.tool === Tool.WeightManagement &&\n this.dropdownSelectedOption.id === Tool.WeightManagement\n ) {\n this._dropdownSelectOptions(this.dropdownSelectedOption.id);\n } else if (this.lastConsultation && this.lastConsultation.tool === Tool.WeightManagement) {\n DataSubscriber.subscribe(\n this.dialog\n .open(ActiveProgramPopinComponent, {\n panelClass: 'small',\n })\n .afterClosed(),\n (data: any) => {\n if (data && data.stay) {\n this._dropdownSelectOptions(this.lastConsultation.tool);\n } else if (data && data.start) {\n this._dropdownSelectOptions(this.dropdownSelectedOption.id);\n }\n },\n this._destroyed$,\n this.logger.error\n );\n } else {\n this._dropdownSelectOptions(this.dropdownSelectedOption.id);\n }\n }\n\n private _fetchPatientAndConsultation(patientId: string) {\n const {\n patient$,\n patientError$,\n patientLoading$,\n consultations$,\n consultationsError$,\n consultationsLoading$,\n lastConsultation$,\n lastConsultationError$,\n lastConsultationLoading$,\n nextConsultation$,\n nextConsultationError$,\n nextConsultationLoading$,\n } = this.observablesLayerService.fetchPatientAndConsultations$(patientId);\n this._handlePatient(patient$);\n this._handleConsultations(consultations$);\n this._handlePatientAndConsultations(patient$, consultations$);\n this._handleLastConsultation(lastConsultation$);\n this._handleNextConsultation(nextConsultation$);\n this._handleErrors(patientError$, consultationsError$, lastConsultationError$, nextConsultationError$);\n this._handleLoading(patientLoading$, consultationsLoading$, lastConsultationLoading$, nextConsultationLoading$);\n this.store$.dispatch(getConsultationsWithoutVisit({ patientId }));\n }\n\n private _handlePatient(patient$: Observable): void {\n DataSubscriber.subscribe(patient$, this._onPatientFetched.bind(this), this._destroyed$, console.error);\n }\n\n private _handlePatientAndConsultations(patient$: Observable, consultations$: Observable) {\n consultations$\n .pipe(\n mergeMap((data: ConsultationApiData) => {\n this.consultations = data.result;\n return patient$;\n })\n )\n .subscribe((patient: Patient) => {\n this.patient = patient;\n this.patient.consultations = this.consultations;\n this.petCommunicationService.setPatient(this.patient);\n });\n }\n\n private _handleConsultations(consultations$: Observable): void {\n DataSubscriber.subscribe(consultations$, this._onConsultationsFetched.bind(this), this._destroyed$, console.error);\n }\n\n private _handleLastConsultation(lastConsultation$: Observable): void {\n DataSubscriber.subscribe(lastConsultation$, this._onLastConsultationFetched.bind(this), this._destroyed$, console.error);\n }\n\n private _handleNextConsultation(lastConsultation$: Observable): void {\n DataSubscriber.subscribe(lastConsultation$, this._onNextConsultationFetched.bind(this), this._destroyed$, console.error);\n }\n\n private _handleErrors(\n patientError$: Subject,\n consultationsError$: Subject,\n lastConsultationError$: Subject,\n nextConsultationError$: Subject\n ): void {\n DataSubscriber.subscribe(patientError$, this._onPatientError.bind(this), this._destroyed$, console.error);\n DataSubscriber.subscribe(consultationsError$, this._onConsultationsError.bind(this), this._destroyed$, console.error);\n DataSubscriber.subscribe(lastConsultationError$, this._onLastConsultationError.bind(this), this._destroyed$, console.error);\n DataSubscriber.subscribe(nextConsultationError$, this._onNextConsultationError.bind(this), this._destroyed$, console.error);\n }\n\n private _handleLoading(\n patientLoading$: BehaviorSubject,\n consultationsLoading$: BehaviorSubject,\n lastConsultationLoading$: BehaviorSubject,\n nextConsultationLoading$: BehaviorSubject\n ): void {\n DataSubscriber.subscribeLatest(\n [patientLoading$, consultationsLoading$, lastConsultationLoading$, nextConsultationLoading$],\n this._onLoading.bind(this),\n this._destroyed$,\n console.error\n );\n }\n\n // Set weight inside patient to display it in header\n private _setPatientWeight(patient: Patient, consultation: Consultation) {\n if (patient && consultation) {\n this.patient.pet.currentDisplayedWeight = consultation.visit.weight;\n this.patient = { ...this.patient };\n }\n }\n\n /**\n * Function for setting data taking account the patient\n */\n private _onPatientFetched(patient: Patient) {\n if (!patient) {\n return;\n }\n this.patient = patient;\n\n this._setPatientWeight(patient, this.lastConsultation);\n this.observablesLayerService\n .lifestage$(of(this.patient.pet.speciesCode), of(this.patient.pet.breedCode), of(this.patient.pet.birth.date))\n .lifestage$.subscribe((lifestage) => {\n if (lifestage) {\n this.patient.pet.lifeStage = lifestage;\n }\n this._buildDropdownOptions();\n });\n\n this.petCommunicationService.setPatient(patient);\n\n // We need patient.pet.speciesCode in order to filter breeds.\n this.enumsService\n .fetchBreeds()\n .pipe(take(1), takeUntil(this._destroyed$))\n .subscribe((breeds) => {\n this.petCommunicationService.setBreeds(breeds.filter((breed) => breed.speciesCode === patient.pet.speciesCode));\n });\n }\n\n private _onLastConsultationFetched(lastConsultation: Consultation): void {\n if (!lastConsultation) {\n return;\n }\n\n if (lastConsultation.tool !== Tool.WeightManagement) {\n if (this.currentTab === 'weight-management') {\n this._redirectToPetProfileTab();\n }\n this.menuOptions[1].enabled = false;\n }\n\n this.lastConsultation = lastConsultation;\n\n this._setPatientWeight(this.patient, lastConsultation);\n\n this.petCommunicationService.updateLastConsultation(lastConsultation);\n }\n\n private _onConsultationsFetched(data: ConsultationApiData): void {\n if (!data) {\n return;\n }\n const consultations = data.result;\n this.consultations = data.result;\n this.petCommunicationService.setMedicalRecord(consultations, data.count);\n }\n\n private _onNextConsultationFetched(consultation: Consultation): void {\n if (!consultation) {\n return;\n }\n this.petCommunicationService.updateNextConsultation(consultation);\n this._setPatientWeight(this.patient, consultation);\n }\n\n private _onPatientError(error: string): void {\n this.logger.errorString('PetCommunicationService - Patient', error);\n this._redirectToPetProfileTab();\n this.menuOptions[0].enabled = false;\n }\n\n private _onConsultationsError(error: string): void {\n this.logger.errorString('PetCommunicationService - Consultations', error);\n this._redirectToPetProfileTab();\n this.menuOptions[0].enabled = false;\n }\n\n private _onLastConsultationError(error: string): void {\n this.logger.errorString('PetCommunicationService - LastConsultation', error);\n this._redirectToPetProfileTab();\n this.menuOptions[0].enabled = false;\n }\n\n private _onNextConsultationError(error: string): void {\n this.logger.errorString('PetCommunicationService - NextConsultation', error);\n this._redirectToPetProfileTab();\n this.menuOptions[1].enabled = false;\n }\n\n private _redirectToPetProfileTab(): void {\n if (this.currentTab !== 'pet-profile') {\n this.currentTab = 'pet-profile';\n this.router.navigate([AppRoutes.PATIENT, this.patientId, AppRoutes.PET_PROFILE], { replaceUrl: true });\n }\n }\n\n private _onLoading(patientLoading: boolean): void {\n if (patientLoading) {\n this.loaderService.startLoader(true);\n } else {\n this.loaderService.stopLoader();\n }\n }\n\n /**\n * Fetch more medical record\n */\n private _fetchMoreData() {\n this.actionCommunicationService.paginationSubject.pipe(takeUntil(this._destroyed$)).subscribe(({ pageNumber, type }) => {\n this.actionCommunicationService.showLoader(true, type);\n\n switch (type) {\n case this._paginationType.Medical:\n this._fetchConsultationByPage(pageNumber, type);\n break;\n\n case this._paginationType.Weight:\n this.actionCommunicationService.showLoader(false, type);\n break;\n\n default:\n break;\n }\n });\n }\n\n /**\n * Fetch more medical record\n * @param pageNumber - number of page\n * @param type - Medical or Weight type\n */\n private _fetchConsultationByPage(pageNumber: number, type: string) {\n if (!this.patient) {\n this.logger.errorString('pet-page > _fetchConsultationByPage > patient not set');\n } else {\n this.vetService\n .consultationsByPatient(this.patient.id, pageNumber * Constants.LIMIT_CONSULTATIONS_PAGE)\n .pipe(take(1), takeUntil(this._destroyed$))\n .subscribe(\n (data: ConsultationApiData) => {\n this.petCommunicationService.setMedicalRecord(data.result, data.count);\n this.actionCommunicationService.showLoader(false, type);\n },\n (error) => {\n this.actionCommunicationService.showLoader(false, type);\n this.coreFacade.setAlert({ message: error, alertType: RCAlertType.ERROR });\n this.logger.errorString('_fetchConsultationByPage', error);\n }\n );\n }\n }\n\n /**\n * Put new values for a pet on the server and re-update view\n */\n private _onPetUpdate(petUpdate: Pet) {\n let currentPet = this.patient.pet;\n let updatedPet = Helper.mergeDeep({}, currentPet, petUpdate);\n\n this._updatePatientPet(updatedPet);\n this.vetService\n .updatePet(this.patient.petId, petUpdate)\n .pipe(take(1), takeUntil(this._destroyed$))\n .subscribe(\n (pet) => {\n currentPet = updatedPet;\n updatedPet = Helper.mergeDeep({}, currentPet, pet);\n this._updatePatientPet(updatedPet);\n },\n (error) => {\n this._updatePatientPet(currentPet);\n this.coreFacade.setAlert({ message: error, alertType: RCAlertType.ERROR });\n window.scrollTo(0, 0);\n }\n );\n }\n\n private _updatePatientPet(pet: Pet) {\n this.patient = {\n ...this.patient,\n pet: pet,\n };\n // Set weight inside patient to display it in header\n this._setPatientWeight(this.patient, this.lastConsultation);\n this.petCommunicationService.setPatient(this.patient);\n }\n\n /**\n * Function that handles API call error\n */\n private _handleError(error) {\n this.logger.errorString('pet-page > handleError > ', error);\n this.coreFacade.setAlert({ message: error, alertType: RCAlertType.ERROR });\n this.loaderService.stopLoader();\n }\n\n private _buildDropdownOptions(): void {\n combineLatest([\n this.marketService.isEnabled$(ClinicFeature.WM),\n this.marketService.isEnabled$(ClinicFeature.DA),\n this.marketService.isEnabled$(ClinicFeature.SR),\n this.marketService.isEnabled$(ClinicFeature.MUF),\n this.marketService.isEnabled$(ClinicFeature.RD),\n ])\n .pipe(takeUntil(this._destroyed$))\n .subscribe(\n ([weightLossPlanEnabled, dailyAllowanceEnabled, productFinderEnabled, mufEnabled, renalDetectEnabled]: [\n boolean,\n boolean,\n boolean,\n boolean,\n boolean\n ]) => {\n this.selectables = [];\n if (weightLossPlanEnabled && !getWLPAvailabilityError(this.patient?.pet?.lifeStage)) {\n this.selectables.push({\n id: Tool.WeightManagement,\n icon: 'weight-loss',\n title: $localize`:@@home-page_weight-title:`,\n disabled: false,\n });\n }\n if (dailyAllowanceEnabled) {\n this.selectables.push({\n id: Tool.Rationing,\n icon: 'daily-allowance',\n title: $localize`:@@title_calculator:`,\n disabled: false,\n });\n }\n if (productFinderEnabled) {\n this.selectables.push({\n id: Tool.SmartReco,\n icon: 'smart-reco',\n title: $localize`:@@header-link_product_finder:`,\n disabled: false,\n });\n }\n if (mufEnabled && !getMUFAvailabilityError(this.patient?.pet?.lifeStage)) {\n this.selectables.push({\n id: Tool.Multifunction,\n icon: 'multifunctions',\n title: $localize`:@@home-page_multi-title:`,\n disabled: false,\n });\n }\n // enable RD menu just for adult Cat having more than 7 years\n if (renalDetectEnabled && !getRDAvailabilityError(this.patient?.pet?.speciesCode, this.patient?.pet?.birth?.date)) {\n this.selectables.push({\n id: Tool.RenalDetect,\n icon: 'multifunctions',\n title: $localize`:@@home-page_renal-detect-btn:`,\n disabled: false,\n });\n }\n }\n );\n }\n\n /**\n * Option for start consulation\n **/\n private _dropdownSelectOptions(optionId: string) {\n this.store$.dispatch(resetConsultationData());\n this.store$.dispatch(resetProductsData());\n this.store$.dispatch(setConsultationPatient({ value: this.patient }));\n this.store$.dispatch(setConsultationLastConsultation({ value: this.lastConsultation }));\n this.store$.dispatch(setTool({ tool: optionId as Tool, tool_flow_id: Helper.randomId() }));\n this.store$.dispatch(resetShareRecommendationData());\n\n this.vetService.currentBigMeasurementUnit$\n .pipe(\n take(1),\n tap((currentBigMeasurementUnit) => {\n this.trackingService.sendInteraction(\n startConsultationExistingPatientGtm({\n patient: this.patient,\n tool: optionId as Tool,\n lastConsultation: this.lastConsultation,\n currentBigMeasurementUnit,\n })\n );\n })\n )\n .subscribe();\n switch (optionId) {\n case Tool.WeightManagement:\n this.store$.dispatch(\n this.lastConsultation?.tool === Tool.WeightManagement\n ? startWeightManagement({ step: WeightManagementStep.FollowUp })\n : startWeightManagement({})\n );\n break;\n case Tool.Rationing:\n this.store$.dispatch(startDailyAllowance({ withIdentification: true }));\n break;\n case Tool.SmartReco: {\n this.store$.dispatch(startSmartReco({ withIdentification: true }));\n break;\n }\n case Tool.RenalDetect: {\n this.store$.dispatch(startRenalDetect());\n break;\n }\n case Tool.Multifunction: {\n this.store$.dispatch(startMufPersonalisedBag({}));\n break;\n }\n default:\n this.logger.warn('dropdownSelectOptions > invalid choice');\n }\n }\n}\n","\n\n \n\n\n\n\n\n\n \n \n \n\n","import { CoreFacade } from '@app/store/core/core.facade';\nimport { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth/auth.service';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable()\nexport class StandaloneGuard implements CanActivate {\n constructor(private router: Router, private authService: AuthService, private coreFacade: CoreFacade) {}\n /**\n * Redirects to access denied page if no token can be found\n */\n canActivate(): Observable {\n return combineLatest([this.authService.getToken$(), this.authService.loginWithSessionTokenPending$]).pipe(\n filter(([_, pending]) => !pending),\n map(([token]) => {\n if (!token) {\n this.router.navigateByUrl('/access-denied');\n this.coreFacade.toggleLoader(false);\n return false;\n }\n return true;\n })\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { startSmartReco } from '@app/pages/smart-reco/store/actions/smart-reco-steps.actions';\nimport { Helper, Tool } from '@app/shared/utils';\nimport { AppState } from '@app/store';\nimport { setTool } from '@app/store/core';\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'app-srs-init',\n template: '',\n})\nexport class SrsInitComponent implements OnInit {\n constructor(private store$: Store) {}\n\n ngOnInit(): void {\n this.store$.dispatch(startSmartReco({ withIdentification: false, isNewPet: true }));\n this.store$.dispatch(setTool({ tool: Tool.SmartReco, tool_flow_id: Helper.randomId() }));\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-srs-progress-bar',\n templateUrl: './standalone-progress-bar.component.html',\n styleUrls: ['./standalone-progress-bar.component.scss'],\n})\nexport class StandaloneProgressBarComponent {\n @Input() value = 0;\n}\n","
\n
\n
\n","import { Location } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { Event, NavigationEnd, Router } from '@angular/router';\nimport { SmartRecoStep } from '@app/pages/smart-reco/smart-reco-step';\nimport { setSmartRecoStep } from '@app/pages/smart-reco/store/actions/smart-reco-steps.actions';\nimport { selectSmartRecoStep, selectSmartRecoSteps } from '@app/pages/smart-reco/store/selectors/smart-reco-steps.selectors';\nimport { AppState } from '@app/store';\nimport { Store } from '@ngrx/store';\nimport { combineLatest } from 'rxjs';\nimport { filter, map, startWith } from 'rxjs/operators';\n\nenum SrsPath {\n patient = '/smart-reco/patient',\n recommendation = '/smart-reco/recommendation',\n allowance = '/allowance',\n}\ninterface SrsPage {\n path: SrsPath;\n key: string;\n index: number;\n steps: SmartRecoStep[];\n}\n\n@Component({\n selector: 'app-srs-nav',\n templateUrl: './standalone-nav.component.html',\n styleUrls: ['./standalone-nav.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SrsNavComponent {\n /**\n * Srs pages\n */\n pages: SrsPage[] = [\n {\n path: SrsPath.patient,\n key: 'path_patient',\n index: 1,\n steps: [SmartRecoStep.Profile, SmartRecoStep.Weight, SmartRecoStep.Pathologies],\n },\n {\n path: SrsPath.recommendation,\n key: 'path_products-recommendation',\n index: 2,\n steps: [SmartRecoStep.Recommendation],\n },\n { path: SrsPath.allowance, key: 'path_daily-allowance', index: 3, steps: [SmartRecoStep.Allowance] },\n ];\n /**\n * Step number to display\n */\n standalonePage$ = this.router.events.pipe(\n filter((e: Event): e is NavigationEnd => e instanceof NavigationEnd),\n map((e: NavigationEnd) => this.getSmartRecoPage(e.urlAfterRedirects)),\n startWith(this.getSmartRecoPage(this.location.path()))\n );\n /**\n * Progress bar percentage value\n */\n progressValue$ = combineLatest([this.store$.select(selectSmartRecoSteps), this.store$.select(selectSmartRecoStep)]).pipe(\n map(([steps, currentStep]) => (steps.indexOf(currentStep) + 1) * 20)\n );\n\n constructor(private store$: Store, private router: Router, private location: Location) {}\n /**\n * Go back to previous step\n */\n goToStep(pageIndex: number): void {\n const page = this.pages.find((s) => s.index === pageIndex);\n this.store$.dispatch(setSmartRecoStep({ value: page.steps[0] }));\n }\n /**\n * Get page number from url\n */\n private getSmartRecoPage(path: string): SrsPage | null {\n if (path.includes(SrsPath.allowance)) {\n return this.pages[2];\n } else if (path.includes(SrsPath.recommendation)) {\n return this.pages[1];\n } else if (path.includes(SrsPath.patient)) {\n return this.pages[0];\n }\n return null;\n }\n}\n","\n\n","import { EnumsService } from '@app/core/services';\nimport { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { CoreFacade } from '@app/store/core/core.facade';\nimport { VetFacade } from '@app/store/vet';\nimport { tap, switchMap, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'app-main-page',\n templateUrl: './srs-main-page.component.html',\n styleUrls: ['./srs-main-page.component.scss'],\n})\nexport class SrsMainPageComponent implements OnInit {\n isConfigValid$ = this.vetFacade.isVetValid$.pipe(\n tap((isVetValid) => !isVetValid && this.vetFacade.loadVet()),\n tap((isConfigValid) => this.coreFacade.toggleLoader(!isConfigValid)),\n filter((isConfigValid) => !!isConfigValid),\n switchMap(() => {\n // TODO: once flows are all migrated, only use store for breeds\n return this.enumsService.fetchBreeds();\n })\n );\n\n constructor(\n private vetFacade: VetFacade,\n private coreFacade: CoreFacade,\n private enumsService: EnumsService,\n private title: Title,\n @Inject(LOCALE_ID) protected localeId: string\n ) {}\n\n ngOnInit(): void {\n this.title.setTitle('Smart Reco');\n this.coreFacade.toggleLoader(true);\n }\n}\n","
\n
\n \n
\n \n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-srs-access-denied',\n styleUrls: ['standalone-access-denied.component.scss'],\n templateUrl: './standalone-access-denied.component.html',\n})\nexport class StandaloneAccessDeniedComponent {}\n","
\n \"logo\"\n\n

Access forbidden

\n\n

\n The request requires authentification. You do not have permission to access this page. Please reach out to your Royal Canin Sales Rep or\n our Consumer Care team.\n

\n
\n","import { NgModule } from '@angular/core';\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\nimport { BrowserDeprecationComponent, MainPageComponent } from '@app/pages';\nimport { OktaCallbackComponent } from '@app/pages/okta/callback.component';\nimport { PetPageComponent } from '@app/pages/pet-page/container/pet-page.component';\nimport { StandaloneGuard } from './standalone/standalone-guard';\nimport { SrsInitComponent } from './standalone/srs-init.component';\nimport { SrsMainPageComponent } from './standalone/srs-main-page/srs-main-page.component';\nimport { SrsNavComponent } from './standalone/standalone-nav/srs-nav.component';\nimport { StandaloneAccessDeniedComponent } from './standalone/standalone-access-denied/standalone-access-denied.component';\nimport { StandaloneProgressBarComponent } from './standalone/standalone-progress-bar/standalone-progress-bar.component';\nimport { AppRoutes } from './shared/utils/enums/routes.enum';\n\nconst routes: Routes = [\n {\n path: AppRoutes.CALLBACK,\n component: OktaCallbackComponent,\n },\n {\n path: AppRoutes.BROWSER_DEPRECATED,\n component: BrowserDeprecationComponent,\n },\n {\n path: AppRoutes.ACCESS_DENIED,\n component: StandaloneAccessDeniedComponent,\n },\n {\n path: '',\n component: SrsMainPageComponent,\n canActivate: [StandaloneGuard],\n runGuardsAndResolvers: 'always',\n children: [\n {\n path: '',\n component: SrsInitComponent,\n },\n {\n path: AppRoutes.SMART_RECO,\n loadChildren: () => import('app/pages/smart-reco/smart-reco.module').then((m) => m.SmartRecoModule),\n },\n {\n path: AppRoutes.ALLOWANCE,\n loadChildren: () => import('app/pages/allowance/allowance.module').then((m) => m.AllowanceModule),\n },\n {\n path: AppRoutes.SHARE_RECOMMENDATION,\n loadComponent: () =>\n import('app/pages/share-recommendation/share-recommendation.component').then((c) => c.ShareRecommendationComponent),\n },\n ],\n },\n {\n path: '**',\n redirectTo: '',\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })],\n exports: [RouterModule],\n declarations: [],\n providers: [StandaloneGuard],\n})\nexport class AppRoutingModule {}\n/**\n * These components are imported directly into AppModule for retrocompatibility\n */\nexport const routingComponents: any[] = [\n BrowserDeprecationComponent,\n OktaCallbackComponent,\n /**\n * Srs component\n */\n SrsInitComponent,\n SrsMainPageComponent,\n StandaloneProgressBarComponent,\n SrsNavComponent,\n StandaloneAccessDeniedComponent,\n /**\n * Needs to be imported because PetCommunicationService\n */\n PetPageComponent,\n MainPageComponent,\n];\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ElementRef, OnInit, OnDestroy } from '@angular/core';\nimport { ChildActivationStart, NavigationEnd, Params, Router } from '@angular/router';\nimport { AuthService, ScriptService } from '@app/core/services';\nimport { Helper, Constants } from '@app/shared/utils';\nimport { IconName } from '../app/shared/utils/icon/icons/index';\nimport { environment } from '@env/environment';\nimport { distinctUntilChanged, filter, map, observeOn, take, takeUntil, tap } from 'rxjs/operators';\nimport version from '@package.json';\nimport { LocalizationService } from './core/services/utils/localization/localization.service';\nimport { Env } from './shared/utils/enums/environment.enum';\nimport { StandaloneService } from './standalone/standalone.service';\nimport { CoreFacade } from './store/core/core.facade';\nimport { VetFacade } from './store/vet';\nimport { AlertNotification } from '@app/core/models';\nimport { asyncScheduler, Subject } from 'rxjs';\nimport { AppRoutes } from './shared/utils/enums/routes.enum';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppComponent implements OnInit, AfterContentInit, OnDestroy {\n isIE = Helper.isInternetExplorer();\n isBrowserDeprecated = Helper.isBrowserDeprecated();\n version = version;\n iconName = IconName;\n isStandalone = environment.isStandalone;\n _destroyed$ = new Subject();\n showLoader$ = this.coreFacade.showLoader$.pipe(observeOn(asyncScheduler), takeUntil(this._destroyed$));\n showProgressBar$ = this.coreFacade.showProgressBar$.pipe(observeOn(asyncScheduler), takeUntil(this._destroyed$));\n loaderTransparent$ = this.coreFacade.loaderTransparent$.pipe(observeOn(asyncScheduler), takeUntil(this._destroyed$));\n alerts$ = this.coreFacade.alerts$.pipe(distinctUntilChanged((prev, curr) => prev.length === curr.length));\n showFooter$ = this.vetFacade.clinic$.pipe(\n map((clinic) => !this.isStandalone && Constants.COUNTRIES_WITH_FOOTER.some((country) => clinic?.companyAddress?.country === country))\n );\n srsTermUrl$ = this.vetFacade.currentClinicCountry$.pipe(\n filter((country) => !!country),\n map((country) => `https://www.royalcanin.com/${country.toLowerCase()}/about-us/smart-reco`)\n );\n\n constructor(\n private router: Router,\n private scriptService: ScriptService,\n private _elementRef: ElementRef,\n private vetFacade: VetFacade,\n private coreFacade: CoreFacade,\n private authService: AuthService,\n private standaloneService: StandaloneService\n ) {}\n\n ngOnInit(): void {\n if (this.isIE || this.isBrowserDeprecated) {\n this.router.navigate([AppRoutes.BROWSER_DEPRECATED]).then();\n }\n this._removeAngularVersion();\n this._scrollToTop();\n this.scriptService.initDocumentLang();\n this.handleInitialQueryParams();\n this.coreFacade.loadLocalization();\n }\n\n /**\n * Load external scripts\n */\n ngAfterContentInit(): void {\n this.scriptService.loadOneTrustScript();\n this.scriptService.loadMarsFooter();\n if (LocalizationService.isPhraseSdkEnabled) {\n this.scriptService.loadPhraseAppEditor();\n }\n if (environment.envName === Env.STG) {\n this.scriptService.loadZESnippet();\n }\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n\n backToTop(): void {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n }\n\n close(alert: AlertNotification): void {\n this.coreFacade.removeAlert(alert);\n }\n\n /**\n * If invitation is provided via query params, we save it to the store\n */\n private saveInvitation = (params: Params) => {\n const id = params.invitation;\n const email = params.email;\n const clinicId = params.clinic_id;\n id && email && clinicId && this.vetFacade.setInvitation({ id, email, clinicId });\n };\n\n /**\n * If SRS info is provided we save it here to the localstorage\n * We cannot instantiate RouterFlowData here because user is first redirected to okta\n * However we'll be able to save it to persistent store after SR migration\n */\n private saveStandaloneInfo = (params: Params) => {\n !!params.srs && (this.standaloneService.data = params.srs);\n };\n\n /**\n * If internal redirect info is passes, we persist it in the session storage\n * in order to start a flow once user is logged in\n */\n private saveInternalRedirectInfo = (params: Params) => {\n !!params.startFlow && sessionStorage.setItem(Constants.INTERNAL_REDIRECT_KEY, params.startFlow);\n };\n\n /**\n * If token or redirectToLogin is passed, we login with it\n * Happens after register and in SRS\n */\n private useAutoLogin = (params: Params) => {\n const token = params.token;\n const redirectToLogin = params.redirectToLogin;\n if (token) {\n this.coreFacade.toggleLoader(true);\n this.authService.loginWithSessionToken(token);\n } else if (redirectToLogin === 'true') {\n this.coreFacade.toggleLoader(true);\n this.authService.login();\n }\n };\n\n /**\n * Get initial query params and dispatch actions if needed\n */\n private handleInitialQueryParams() {\n this.router.events\n .pipe(\n filter((e) => e instanceof ChildActivationStart),\n take(1),\n map((e: ChildActivationStart) => e.snapshot.queryParams),\n tap(this.saveInvitation),\n tap(this.saveStandaloneInfo),\n tap(this.saveInternalRedirectInfo),\n tap(this.useAutoLogin)\n )\n .subscribe();\n }\n\n /**\n * Remove ng-version from the DOM\n */\n private _removeAngularVersion() {\n this._elementRef.nativeElement.removeAttribute('ng-version');\n }\n\n /**\n * Scroll to the top\n */\n private _scrollToTop() {\n this.router.events.subscribe((evt) => {\n if (!(evt instanceof NavigationEnd)) {\n return;\n }\n window.scrollTo(0, 0);\n });\n }\n}\n","\n\n\n
\n
\n

{{ alert.message }}

\n
\n
\n
\n \n
\n\n \n \n \n \n

© Vet Services: {{ version?.version }}

\n Vet Services legal notice\n
\n
\n
\n \n
\n
terms and conditions\n","import requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nexport default function isSameUTCWeek(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfUTCWeek(dirtyDateLeft, options);\n var dateRightStartOfWeek = startOfUTCWeek(dirtyDateRight, options);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: {\n regular: 'méně než sekunda',\n past: 'před méně než sekundou',\n future: 'za méně než sekundu'\n },\n few: {\n regular: 'méně než {{count}} sekundy',\n past: 'před méně než {{count}} sekundami',\n future: 'za méně než {{count}} sekundy'\n },\n many: {\n regular: 'méně než {{count}} sekund',\n past: 'před méně než {{count}} sekundami',\n future: 'za méně než {{count}} sekund'\n }\n },\n xSeconds: {\n one: {\n regular: 'sekunda',\n past: 'před sekundou',\n future: 'za sekundu'\n },\n few: {\n regular: '{{count}} sekundy',\n past: 'před {{count}} sekundami',\n future: 'za {{count}} sekundy'\n },\n many: {\n regular: '{{count}} sekund',\n past: 'před {{count}} sekundami',\n future: 'za {{count}} sekund'\n }\n },\n halfAMinute: {\n type: 'other',\n other: {\n regular: 'půl minuty',\n past: 'před půl minutou',\n future: 'za půl minuty'\n }\n },\n lessThanXMinutes: {\n one: {\n regular: 'méně než minuta',\n past: 'před méně než minutou',\n future: 'za méně než minutu'\n },\n few: {\n regular: 'méně než {{count}} minuty',\n past: 'před méně než {{count}} minutami',\n future: 'za méně než {{count}} minuty'\n },\n many: {\n regular: 'méně než {{count}} minut',\n past: 'před méně než {{count}} minutami',\n future: 'za méně než {{count}} minut'\n }\n },\n xMinutes: {\n one: {\n regular: 'minuta',\n past: 'před minutou',\n future: 'za minutu'\n },\n few: {\n regular: '{{count}} minuty',\n past: 'před {{count}} minutami',\n future: 'za {{count}} minuty'\n },\n many: {\n regular: '{{count}} minut',\n past: 'před {{count}} minutami',\n future: 'za {{count}} minut'\n }\n },\n aboutXHours: {\n one: {\n regular: 'přibližně hodina',\n past: 'přibližně před hodinou',\n future: 'přibližně za hodinu'\n },\n few: {\n regular: 'přibližně {{count}} hodiny',\n past: 'přibližně před {{count}} hodinami',\n future: 'přibližně za {{count}} hodiny'\n },\n many: {\n regular: 'přibližně {{count}} hodin',\n past: 'přibližně před {{count}} hodinami',\n future: 'přibližně za {{count}} hodin'\n }\n },\n xHours: {\n one: {\n regular: 'hodina',\n past: 'před hodinou',\n future: 'za hodinu'\n },\n few: {\n regular: '{{count}} hodiny',\n past: 'před {{count}} hodinami',\n future: 'za {{count}} hodiny'\n },\n many: {\n regular: '{{count}} hodin',\n past: 'před {{count}} hodinami',\n future: 'za {{count}} hodin'\n }\n },\n xDays: {\n one: {\n regular: 'den',\n past: 'před dnem',\n future: 'za den'\n },\n few: {\n regular: '{{count}} dny',\n past: 'před {{count}} dny',\n future: 'za {{count}} dny'\n },\n many: {\n regular: '{{count}} dní',\n past: 'před {{count}} dny',\n future: 'za {{count}} dní'\n }\n },\n aboutXWeeks: {\n one: {\n regular: 'přibližně týden',\n past: 'přibližně před týdnem',\n future: 'přibližně za týden'\n },\n few: {\n regular: 'přibližně {{count}} týdny',\n past: 'přibližně před {{count}} týdny',\n future: 'přibližně za {{count}} týdny'\n },\n many: {\n regular: 'přibližně {{count}} týdnů',\n past: 'přibližně před {{count}} týdny',\n future: 'přibližně za {{count}} týdnů'\n }\n },\n xWeeks: {\n one: {\n regular: 'týden',\n past: 'před týdnem',\n future: 'za týden'\n },\n few: {\n regular: '{{count}} týdny',\n past: 'před {{count}} týdny',\n future: 'za {{count}} týdny'\n },\n many: {\n regular: '{{count}} týdnů',\n past: 'před {{count}} týdny',\n future: 'za {{count}} týdnů'\n }\n },\n aboutXMonths: {\n one: {\n regular: 'přibližně měsíc',\n past: 'přibližně před měsícem',\n future: 'přibližně za měsíc'\n },\n few: {\n regular: 'přibližně {{count}} měsíce',\n past: 'přibližně před {{count}} měsíci',\n future: 'přibližně za {{count}} měsíce'\n },\n many: {\n regular: 'přibližně {{count}} měsíců',\n past: 'přibližně před {{count}} měsíci',\n future: 'přibližně za {{count}} měsíců'\n }\n },\n xMonths: {\n one: {\n regular: 'měsíc',\n past: 'před měsícem',\n future: 'za měsíc'\n },\n few: {\n regular: '{{count}} měsíce',\n past: 'před {{count}} měsíci',\n future: 'za {{count}} měsíce'\n },\n many: {\n regular: '{{count}} měsíců',\n past: 'před {{count}} měsíci',\n future: 'za {{count}} měsíců'\n }\n },\n aboutXYears: {\n one: {\n regular: 'přibližně rok',\n past: 'přibližně před rokem',\n future: 'přibližně za rok'\n },\n few: {\n regular: 'přibližně {{count}} roky',\n past: 'přibližně před {{count}} roky',\n future: 'přibližně za {{count}} roky'\n },\n many: {\n regular: 'přibližně {{count}} roků',\n past: 'přibližně před {{count}} roky',\n future: 'přibližně za {{count}} roků'\n }\n },\n xYears: {\n one: {\n regular: 'rok',\n past: 'před rokem',\n future: 'za rok'\n },\n few: {\n regular: '{{count}} roky',\n past: 'před {{count}} roky',\n future: 'za {{count}} roky'\n },\n many: {\n regular: '{{count}} roků',\n past: 'před {{count}} roky',\n future: 'za {{count}} roků'\n }\n },\n overXYears: {\n one: {\n regular: 'více než rok',\n past: 'před více než rokem',\n future: 'za více než rok'\n },\n few: {\n regular: 'více než {{count}} roky',\n past: 'před více než {{count}} roky',\n future: 'za více než {{count}} roky'\n },\n many: {\n regular: 'více než {{count}} roků',\n past: 'před více než {{count}} roky',\n future: 'za více než {{count}} roků'\n }\n },\n almostXYears: {\n one: {\n regular: 'skoro rok',\n past: 'skoro před rokem',\n future: 'skoro za rok'\n },\n few: {\n regular: 'skoro {{count}} roky',\n past: 'skoro před {{count}} roky',\n future: 'skoro za {{count}} roky'\n },\n many: {\n regular: 'skoro {{count}} roků',\n past: 'skoro před {{count}} roky',\n future: 'skoro za {{count}} roků'\n }\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var pluralResult;\n var tokenValue = formatDistanceLocale[token]; // cs pluralization\n\n if (tokenValue.type === 'other') {\n pluralResult = tokenValue.other;\n } else if (count === 1) {\n pluralResult = tokenValue.one;\n } else if (count > 1 && count < 5) {\n pluralResult = tokenValue.few;\n } else {\n pluralResult = tokenValue.many;\n } // times\n\n var suffixExist = (options === null || options === void 0 ? void 0 : options.addSuffix) === true;\n var comparison = options === null || options === void 0 ? void 0 : options.comparison;\n var timeResult;\n if (suffixExist && comparison === -1) {\n timeResult = pluralResult.past;\n } else if (suffixExist && comparison === 1) {\n timeResult = pluralResult.future;\n } else {\n timeResult = pluralResult.regular;\n }\n return timeResult.replace('{{count}}', String(count));\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d. MMMM yyyy',\n long: 'd. MMMM yyyy',\n medium: 'd. M. yyyy',\n short: 'dd.MM.yyyy'\n};\nvar timeFormats = {\n full: 'H:mm:ss zzzz',\n long: 'H:mm:ss z',\n medium: 'H:mm:ss',\n short: 'H:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'v' {{time}}\",\n long: \"{{date}} 'v' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var accusativeWeekdays = ['neděli', 'pondělí', 'úterý', 'středu', 'čtvrtek', 'pátek', 'sobotu'];\nvar formatRelativeLocale = {\n lastWeek: \"'poslední' eeee 've' p\",\n yesterday: \"'včera v' p\",\n today: \"'dnes v' p\",\n tomorrow: \"'zítra v' p\",\n nextWeek: function nextWeek(date) {\n var day = date.getUTCDay();\n return \"'v \" + accusativeWeekdays[day] + \" o' p\";\n },\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['př. n. l.', 'n. l.'],\n abbreviated: ['př. n. l.', 'n. l.'],\n wide: ['před naším letopočtem', 'našeho letopočtu']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí'],\n wide: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí']\n};\nvar monthValues = {\n narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],\n abbreviated: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],\n wide: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec']\n};\nvar formattingMonthValues = {\n narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],\n abbreviated: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],\n wide: ['ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', 'listopadu', 'prosince']\n};\nvar dayValues = {\n narrow: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n short: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n abbreviated: ['ned', 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob'],\n wide: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n abbreviated: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n wide: {\n am: 'dopoledne',\n pm: 'odpoledne',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n abbreviated: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n wide: {\n am: 'dopoledne',\n pm: 'odpoledne',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(p[řr](\\.|ed) Kr\\.|p[řr](\\.|ed) n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n abbreviated: /^(p[řr](\\.|ed) Kr\\.|p[řr](\\.|ed) n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n wide: /^(p[řr](\\.|ed) Kristem|p[řr](\\.|ed) na[šs][íi]m letopo[čc]tem|po Kristu|na[šs]eho letopo[čc]tu)/i\n};\nvar parseEraPatterns = {\n any: [/^p[řr]/i, /^(po|n)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]\\. [čc]tvrtlet[íi]/i,\n wide: /^[1234]\\. [čc]tvrtlet[íi]/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[lúubdkčcszřrlp]/i,\n abbreviated: /^(led|[úu]no|b[řr]e|dub|kv[ěe]|[čc]vn|[čc]vc|srp|z[áa][řr]|[řr][íi]j|lis|pro)/i,\n wide: /^(leden|ledna|[úu]nora?|b[řr]ezen|b[řr]ezna|duben|dubna|kv[ěe]ten|kv[ěe]tna|[čc]erven(ec|ce)?|[čc]ervna|srpen|srpna|z[áa][řr][íi]|[řr][íi]jen|[řr][íi]jna|listopad(a|u)?|prosinec|prosince)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^l/i, /^[úu]/i, /^b/i, /^d/i, /^k/i, /^[čc]/i, /^[čc]/i, /^s/i, /^z/i, /^[řr]/i, /^l/i, /^p/i],\n any: [/^led/i, /^[úu]n/i, /^b[řr]e/i, /^dub/i, /^kv[ěe]/i, /^[čc]vn|[čc]erven(?!\\w)|[čc]ervna/i, /^[čc]vc|[čc]erven(ec|ce)/i, /^srp/i, /^z[áa][řr]/i, /^[řr][íi]j/i, /^lis/i, /^pro/i]\n};\nvar matchDayPatterns = {\n narrow: /^[npuúsčps]/i,\n short: /^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,\n abbreviated: /^(ned|pon|[úu]te|st[rř]|[čc]tv|p[áa]t|sob)/i,\n wide: /^(ned[ěe]le|pond[ěe]l[íi]|[úu]ter[ýy]|st[řr]eda|[čc]tvrtek|p[áa]tek|sobota)/i\n};\nvar parseDayPatterns = {\n narrow: [/^n/i, /^p/i, /^[úu]/i, /^s/i, /^[čc]/i, /^p/i, /^s/i],\n any: [/^ne/i, /^po/i, /^[úu]t/i, /^st/i, /^[čc]t/i, /^p[áa]/i, /^so/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^dopoledne|dop\\.?|odpoledne|odp\\.?|p[ůu]lnoc|poledne|r[áa]no|odpoledne|ve[čc]er|(v )?noci?/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^dop/i,\n pm: /^odp/i,\n midnight: /^p[ůu]lnoc/i,\n noon: /^poledne/i,\n morning: /r[áa]no/i,\n afternoon: /odpoledne/i,\n evening: /ve[čc]er/i,\n night: /noc/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Czech locale.\n * @language Czech\n * @iso-639-2 ces\n * @author David Rus [@davidrus]{@link https://github.com/davidrus}\n * @author Pavel Hrách [@SilenY]{@link https://github.com/SilenY}\n * @author Jozef Bíroš [@JozefBiros]{@link https://github.com/JozefBiros}\n */\n\nvar locale = {\n code: 'cs',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'mindre end ét sekund',\n other: 'mindre end {{count}} sekunder'\n },\n xSeconds: {\n one: '1 sekund',\n other: '{{count}} sekunder'\n },\n halfAMinute: 'ét halvt minut',\n lessThanXMinutes: {\n one: 'mindre end ét minut',\n other: 'mindre end {{count}} minutter'\n },\n xMinutes: {\n one: '1 minut',\n other: '{{count}} minutter'\n },\n aboutXHours: {\n one: 'cirka 1 time',\n other: 'cirka {{count}} timer'\n },\n xHours: {\n one: '1 time',\n other: '{{count}} timer'\n },\n xDays: {\n one: '1 dag',\n other: '{{count}} dage'\n },\n aboutXWeeks: {\n one: 'cirka 1 uge',\n other: 'cirka {{count}} uger'\n },\n xWeeks: {\n one: '1 uge',\n other: '{{count}} uger'\n },\n aboutXMonths: {\n one: 'cirka 1 måned',\n other: 'cirka {{count}} måneder'\n },\n xMonths: {\n one: '1 måned',\n other: '{{count}} måneder'\n },\n aboutXYears: {\n one: 'cirka 1 år',\n other: 'cirka {{count}} år'\n },\n xYears: {\n one: '1 år',\n other: '{{count}} år'\n },\n overXYears: {\n one: 'over 1 år',\n other: 'over {{count}} år'\n },\n almostXYears: {\n one: 'næsten 1 år',\n other: 'næsten {{count}} år'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'om ' + result;\n } else {\n return result + ' siden';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"EEEE 'den' d. MMMM y\",\n long: 'd. MMMM y',\n medium: 'd. MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'kl'. {{time}}\",\n long: \"{{date}} 'kl'. {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'sidste' eeee 'kl.' p\",\n yesterday: \"'i går kl.' p\",\n today: \"'i dag kl.' p\",\n tomorrow: \"'i morgen kl.' p\",\n nextWeek: \"'på' eeee 'kl.' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['fvt', 'vt'],\n abbreviated: ['f.v.t.', 'v.t.'],\n wide: ['før vesterlandsk tidsregning', 'vesterlandsk tidsregning']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1. kvt.', '2. kvt.', '3. kvt.', '4. kvt.'],\n wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december']\n}; // Note that 'Days - abbreviated - Formatting' has periods at the end.\n// https://www.unicode.org/cldr/charts/32/summary/da.html#1760\n// This makes grammatical sense in danish, as most abbreviations have periods.\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n short: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],\n abbreviated: ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'],\n wide: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'morgen',\n afternoon: 'eftermiddag',\n evening: 'aften',\n night: 'nat'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'morgen',\n afternoon: 'eftermiddag',\n evening: 'aften',\n night: 'nat'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'morgen',\n afternoon: 'eftermiddag',\n evening: 'aften',\n night: 'nat'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'om morgenen',\n afternoon: 'om eftermiddagen',\n evening: 'om aftenen',\n night: 'om natten'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'om morgenen',\n afternoon: 'om eftermiddagen',\n evening: 'om aftenen',\n night: 'om natten'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnat',\n noon: 'middag',\n morning: 'om morgenen',\n afternoon: 'om eftermiddagen',\n evening: 'om aftenen',\n night: 'om natten'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(fKr|fvt|eKr|vt)/i,\n abbreviated: /^(f\\.Kr\\.?|f\\.v\\.t\\.?|e\\.Kr\\.?|v\\.t\\.)/i,\n wide: /^(f.Kr.|før vesterlandsk tidsregning|e.Kr.|vesterlandsk tidsregning)/i\n};\nvar parseEraPatterns = {\n any: [/^f/i, /^(v|e)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]. kvt\\./i,\n wide: /^[1234]\\.? kvartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan.|feb.|mar.|apr.|maj|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,\n wide: /^(januar|februar|marts|april|maj|juni|juli|august|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^maj/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtofl]/i,\n short: /^(søn.|man.|tir.|ons.|tor.|fre.|lør.)/i,\n abbreviated: /^(søn|man|tir|ons|tor|fre|lør)/i,\n wide: /^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^o/i, /^t/i, /^f/i, /^l/i],\n any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /midnat/i,\n noon: /middag/i,\n morning: /morgen/i,\n afternoon: /eftermiddag/i,\n evening: /aften/i,\n night: /nat/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Danish locale.\n * @language Danish\n * @iso-639-2 dan\n * @author Mathias Wøbbe [@MathiasKandelborg]{@link https://github.com/MathiasKandelborg}\n * @author Anders B. Hansen [@Andersbiha]{@link https://github.com/Andersbiha}\n * @author [@kgram]{@link https://github.com/kgram}\n * @author [@stefanbugge]{@link https://github.com/stefanbugge}\n */\n\nvar locale = {\n code: 'da',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n standalone: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n },\n withPreposition: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n }\n },\n xSeconds: {\n standalone: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n },\n withPreposition: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n }\n },\n halfAMinute: {\n standalone: 'halbe Minute',\n withPreposition: 'halben Minute'\n },\n lessThanXMinutes: {\n standalone: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n },\n withPreposition: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n }\n },\n xMinutes: {\n standalone: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n },\n withPreposition: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n }\n },\n aboutXHours: {\n standalone: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n },\n withPreposition: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n }\n },\n xHours: {\n standalone: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n },\n withPreposition: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n }\n },\n xDays: {\n standalone: {\n one: '1 Tag',\n other: '{{count}} Tage'\n },\n withPreposition: {\n one: '1 Tag',\n other: '{{count}} Tagen'\n }\n },\n aboutXWeeks: {\n standalone: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n },\n withPreposition: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n }\n },\n xWeeks: {\n standalone: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n },\n withPreposition: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n }\n },\n aboutXMonths: {\n standalone: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monate'\n },\n withPreposition: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monaten'\n }\n },\n xMonths: {\n standalone: {\n one: '1 Monat',\n other: '{{count}} Monate'\n },\n withPreposition: {\n one: '1 Monat',\n other: '{{count}} Monaten'\n }\n },\n aboutXYears: {\n standalone: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahre'\n },\n withPreposition: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahren'\n }\n },\n xYears: {\n standalone: {\n one: '1 Jahr',\n other: '{{count}} Jahre'\n },\n withPreposition: {\n one: '1 Jahr',\n other: '{{count}} Jahren'\n }\n },\n overXYears: {\n standalone: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahre'\n },\n withPreposition: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahren'\n }\n },\n almostXYears: {\n standalone: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahre'\n },\n withPreposition: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahren'\n }\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return 'vor ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\n// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008\nvar dateFormats = {\n full: 'EEEE, do MMMM y',\n // Montag, 7. Januar 2018\n long: 'do MMMM y',\n // 7. Januar 2018\n medium: 'do MMM y',\n // 7. Jan. 2018\n short: 'dd.MM.y' // 07.01.2018\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'um' {{time}}\",\n long: \"{{date}} 'um' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'letzten' eeee 'um' p\",\n yesterday: \"'gestern um' p\",\n today: \"'heute um' p\",\n tomorrow: \"'morgen um' p\",\n nextWeek: \"eeee 'um' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.Chr.', 'n.Chr.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['vor Christus', 'nach Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']\n}; // Note: in German, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n wide: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']\n}; // https://st.unicode.org/cldr-apps/v#/de/Gregorian/\n\nvar formattingMonthValues = {\n narrow: monthValues.narrow,\n abbreviated: ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'],\n wide: monthValues.wide\n};\nvar dayValues = {\n narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],\n short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],\n wide: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']\n}; // https://www.unicode.org/cldr/charts/32/summary/de.html#1881\n\nvar dayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachm.',\n evening: 'Abend',\n night: 'Nacht'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachm.',\n evening: 'abends',\n night: 'nachts'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n formattingValues: formattingMonthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n abbreviated: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n wide: /^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i\n};\nvar parseEraPatterns = {\n any: [/^v/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? Quartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\\.?/i,\n wide: /^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^j[aä]/i, /^f/i, /^mär/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smdmf]/i,\n short: /^(so|mo|di|mi|do|fr|sa)/i,\n abbreviated: /^(son?|mon?|die?|mit?|don?|fre?|sam?)\\.?/i,\n wide: /^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i\n};\nvar parseDayPatterns = {\n any: [/^so/i, /^mo/i, /^di/i, /^mi/i, /^do/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(vm\\.?|nm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n abbreviated: /^(vorm\\.?|nachm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n wide: /^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^v/i,\n pm: /^n/i,\n midnight: /^Mitte/i,\n noon: /^Mitta/i,\n morning: /morgens/i,\n afternoon: /nachmittags/i,\n // will never be matched. Afternoon is matched by `pm`\n evening: /abends/i,\n night: /nachts/i // will never be matched. Night is matched by `pm`\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary German locale.\n * @language German\n * @iso-639-2 deu\n * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}\n * @author Asia [@asia-t]{@link https://github.com/asia-t}\n * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}\n * @author RomanErnst [@pex]{@link https://github.com/pex}\n * @author Philipp Keck [@Philipp91]{@link https://github.com/Philipp91}\n */\nvar locale = {\n code: 'de',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'λιγότερο από ένα δευτερόλεπτο',\n other: 'λιγότερο από {{count}} δευτερόλεπτα'\n },\n xSeconds: {\n one: '1 δευτερόλεπτο',\n other: '{{count}} δευτερόλεπτα'\n },\n halfAMinute: 'μισό λεπτό',\n lessThanXMinutes: {\n one: 'λιγότερο από ένα λεπτό',\n other: 'λιγότερο από {{count}} λεπτά'\n },\n xMinutes: {\n one: '1 λεπτό',\n other: '{{count}} λεπτά'\n },\n aboutXHours: {\n one: 'περίπου 1 ώρα',\n other: 'περίπου {{count}} ώρες'\n },\n xHours: {\n one: '1 ώρα',\n other: '{{count}} ώρες'\n },\n xDays: {\n one: '1 ημέρα',\n other: '{{count}} ημέρες'\n },\n aboutXWeeks: {\n one: 'περίπου 1 εβδομάδα',\n other: 'περίπου {{count}} εβδομάδες'\n },\n xWeeks: {\n one: '1 εβδομάδα',\n other: '{{count}} εβδομάδες'\n },\n aboutXMonths: {\n one: 'περίπου 1 μήνας',\n other: 'περίπου {{count}} μήνες'\n },\n xMonths: {\n one: '1 μήνας',\n other: '{{count}} μήνες'\n },\n aboutXYears: {\n one: 'περίπου 1 χρόνο',\n other: 'περίπου {{count}} χρόνια'\n },\n xYears: {\n one: '1 χρόνο',\n other: '{{count}} χρόνια'\n },\n overXYears: {\n one: 'πάνω από 1 χρόνο',\n other: 'πάνω από {{count}} χρόνια'\n },\n almostXYears: {\n one: 'περίπου 1 χρόνο',\n other: 'περίπου {{count}} χρόνια'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'σε ' + result;\n } else {\n return result + ' πριν';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'd/M/yy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: '{{date}} - {{time}}',\n long: '{{date}} - {{time}}',\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: function lastWeek(date) {\n switch (date.getUTCDay()) {\n case 6:\n //Σάββατο\n return \"'το προηγούμενο' eeee 'στις' p\";\n default:\n return \"'την προηγούμενη' eeee 'στις' p\";\n }\n },\n yesterday: \"'χθες στις' p\",\n today: \"'σήμερα στις' p\",\n tomorrow: \"'αύριο στις' p\",\n nextWeek: \"eeee 'στις' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') return format(date);\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['πΧ', 'μΧ'],\n abbreviated: ['π.Χ.', 'μ.Χ.'],\n wide: ['προ Χριστού', 'μετά Χριστόν']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Τ1', 'Τ2', 'Τ3', 'Τ4'],\n wide: ['1ο τρίμηνο', '2ο τρίμηνο', '3ο τρίμηνο', '4ο τρίμηνο']\n};\nvar monthValues = {\n narrow: ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'],\n abbreviated: ['Ιαν', 'Φεβ', 'Μάρ', 'Απρ', 'Μάι', 'Ιούν', 'Ιούλ', 'Αύγ', 'Σεπ', 'Οκτ', 'Νοέ', 'Δεκ'],\n wide: ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος']\n};\nvar formattingMonthValues = {\n narrow: ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'],\n abbreviated: ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαΐ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'],\n wide: ['Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου']\n};\nvar dayValues = {\n narrow: ['Κ', 'Δ', 'T', 'Τ', 'Π', 'Π', 'Σ'],\n short: ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά'],\n abbreviated: ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'],\n wide: ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'πμ',\n pm: 'μμ',\n midnight: 'μεσάνυχτα',\n noon: 'μεσημέρι',\n morning: 'πρωί',\n afternoon: 'απόγευμα',\n evening: 'βράδυ',\n night: 'νύχτα'\n },\n abbreviated: {\n am: 'π.μ.',\n pm: 'μ.μ.',\n midnight: 'μεσάνυχτα',\n noon: 'μεσημέρι',\n morning: 'πρωί',\n afternoon: 'απόγευμα',\n evening: 'βράδυ',\n night: 'νύχτα'\n },\n wide: {\n am: 'π.μ.',\n pm: 'μ.μ.',\n midnight: 'μεσάνυχτα',\n noon: 'μεσημέρι',\n morning: 'πρωί',\n afternoon: 'απόγευμα',\n evening: 'βράδυ',\n night: 'νύχτα'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n var unit = options === null || options === void 0 ? void 0 : options.unit;\n var suffix;\n if (unit === 'year' || unit === 'month') {\n suffix = 'ος';\n } else if (unit === 'week' || unit === 'dayOfYear' || unit === 'day' || unit === 'hour' || unit === 'date') {\n suffix = 'η';\n } else {\n suffix = 'ο';\n }\n return number + suffix;\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ος|η|ο)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(πΧ|μΧ)/i,\n abbreviated: /^(π\\.?\\s?χ\\.?|π\\.?\\s?κ\\.?\\s?χ\\.?|μ\\.?\\s?χ\\.?|κ\\.?\\s?χ\\.?)/i,\n wide: /^(προ Χριστο(ύ|υ)|πριν απ(ό|ο) την Κοιν(ή|η) Χρονολογ(ί|ι)α|μετ(ά|α) Χριστ(ό|ο)ν|Κοιν(ή|η) Χρονολογ(ί|ι)α)/i\n};\nvar parseEraPatterns = {\n any: [/^π/i, /^(μ|κ)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^τ[1234]/i,\n wide: /^[1234]ο? τρ(ί|ι)μηνο/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[ιφμαμιιασονδ]/i,\n abbreviated: /^(ιαν|φεβ|μ[άα]ρ|απρ|μ[άα][ιΐ]|ιο[ύυ]ν|ιο[ύυ]λ|α[ύυ]γ|σεπ|οκτ|νο[έε]|δεκ)/i,\n wide: /^(μ[άα][ιΐ]|α[ύυ]γο[υύ]στ)(ος|ου)|(ιανου[άα]ρ|φεβρου[άα]ρ|μ[άα]ρτ|απρ[ίι]λ|ιο[ύυ]ν|ιο[ύυ]λ|σεπτ[έε]μβρ|οκτ[ώω]βρ|νο[έε]μβρ|δεκ[έε]μβρ)(ιος|ίου)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^ι/i, /^φ/i, /^μ/i, /^α/i, /^μ/i, /^ι/i, /^ι/i, /^α/i, /^σ/i, /^ο/i, /^ν/i, /^δ/i],\n any: [/^ια/i, /^φ/i, /^μ[άα]ρ/i, /^απ/i, /^μ[άα][ιΐ]/i, /^ιο[ύυ]ν/i, /^ιο[ύυ]λ/i, /^α[ύυ]/i, /^σ/i, /^ο/i, /^ν/i, /^δ/i]\n};\nvar matchDayPatterns = {\n narrow: /^[κδτπσ]/i,\n short: /^(κυ|δε|τρ|τε|π[εέ]|π[αά]|σ[αά])/i,\n abbreviated: /^(κυρ|δευ|τρι|τετ|πεμ|παρ|σαβ)/i,\n wide: /^(κυριακ(ή|η)|δευτ(έ|ε)ρα|τρ(ί|ι)τη|τετ(ά|α)ρτη|π(έ|ε)μπτη|παρασκευ(ή|η)|σ(ά|α)ββατο)/i\n};\nvar parseDayPatterns = {\n narrow: [/^κ/i, /^δ/i, /^τ/i, /^τ/i, /^π/i, /^π/i, /^σ/i],\n any: [/^κ/i, /^δ/i, /^τρ/i, /^τε/i, /^π[εέ]/i, /^π[αά]/i, /^σ/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(πμ|μμ|μεσ(ά|α)νυχτα|μεσημ(έ|ε)ρι|πρω(ί|ι)|απ(ό|ο)γευμα|βρ(ά|α)δυ|ν(ύ|υ)χτα)/i,\n any: /^([πμ]\\.?\\s?μ\\.?|μεσ(ά|α)νυχτα|μεσημ(έ|ε)ρι|πρω(ί|ι)|απ(ό|ο)γευμα|βρ(ά|α)δυ|ν(ύ|υ)χτα)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^πμ|π\\.\\s?μ\\./i,\n pm: /^μμ|μ\\.\\s?μ\\./i,\n midnight: /^μεσάν/i,\n noon: /^μεσημ(έ|ε)/i,\n morning: /πρω(ί|ι)/i,\n afternoon: /απ(ό|ο)γευμα/i,\n evening: /βρ(ά|α)δυ/i,\n night: /ν(ύ|υ)χτα/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Greek locale.\n * @language Greek\n * @iso-639-2 ell\n * @author Fanis Katsimpas [@fanixk]{@link https://github.com/fanixk}\n * @author Theodoros Orfanidis [@teoulas]{@link https://github.com/teoulas}\n */\n\nvar locale = {\n code: 'el',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d MMMM yyyy',\n long: 'd MMMM yyyy',\n medium: 'd MMM yyyy',\n short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import formatDistance from \"../en-US/_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (Australia).\n * @language English\n * @iso-639-2 eng\n * @author Julien Malige [@JulienMalige]{@link https://github.com/JulienMalige}\n */\nvar locale = {\n code: 'en-AU',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: 'a second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: 'a minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about an hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: 'an hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: 'a day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about a week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: 'a week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about a month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: 'a month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about a year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: 'a year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over a year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost a year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, yyyy',\n long: 'MMMM do, yyyy',\n medium: 'MMM d, yyyy',\n short: 'yyyy-MM-dd'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\nimport formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (Canada).\n * @language English\n * @iso-639-2 eng\n * @author Mark Owsiak [@markowsiak]{@link https://github.com/markowsiak}\n * @author Marco Imperatore [@mimperatore]{@link https://github.com/mimperatore}\n */\n\nvar locale = {\n code: 'en-CA',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */,\n\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d MMMM yyyy',\n long: 'd MMMM yyyy',\n medium: 'd MMM yyyy',\n short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import formatDistance from \"../en-US/_lib/formatDistance/index.js\";\nimport formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United Kingdom).\n * @language English\n * @iso-639-2 eng\n * @author Alex [@glintik]{@link https://github.com/glintik}\n */\n\nvar locale = {\n code: 'en-GB',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'menos de un segundo',\n other: 'menos de {{count}} segundos'\n },\n xSeconds: {\n one: '1 segundo',\n other: '{{count}} segundos'\n },\n halfAMinute: 'medio minuto',\n lessThanXMinutes: {\n one: 'menos de un minuto',\n other: 'menos de {{count}} minutos'\n },\n xMinutes: {\n one: '1 minuto',\n other: '{{count}} minutos'\n },\n aboutXHours: {\n one: 'alrededor de 1 hora',\n other: 'alrededor de {{count}} horas'\n },\n xHours: {\n one: '1 hora',\n other: '{{count}} horas'\n },\n xDays: {\n one: '1 día',\n other: '{{count}} días'\n },\n aboutXWeeks: {\n one: 'alrededor de 1 semana',\n other: 'alrededor de {{count}} semanas'\n },\n xWeeks: {\n one: '1 semana',\n other: '{{count}} semanas'\n },\n aboutXMonths: {\n one: 'alrededor de 1 mes',\n other: 'alrededor de {{count}} meses'\n },\n xMonths: {\n one: '1 mes',\n other: '{{count}} meses'\n },\n aboutXYears: {\n one: 'alrededor de 1 año',\n other: 'alrededor de {{count}} años'\n },\n xYears: {\n one: '1 año',\n other: '{{count}} años'\n },\n overXYears: {\n one: 'más de 1 año',\n other: 'más de {{count}} años'\n },\n almostXYears: {\n one: 'casi 1 año',\n other: 'casi {{count}} años'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'en ' + result;\n } else {\n return 'hace ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"EEEE, d 'de' MMMM 'de' y\",\n long: \"d 'de' MMMM 'de' y\",\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'a las' {{time}}\",\n long: \"{{date}} 'a las' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'el' eeee 'pasado a la' p\",\n yesterday: \"'ayer a la' p\",\n today: \"'hoy a la' p\",\n tomorrow: \"'mañana a la' p\",\n nextWeek: \"eeee 'a la' p\",\n other: 'P'\n};\nvar formatRelativeLocalePlural = {\n lastWeek: \"'el' eeee 'pasado a las' p\",\n yesterday: \"'ayer a las' p\",\n today: \"'hoy a las' p\",\n tomorrow: \"'mañana a las' p\",\n nextWeek: \"eeee 'a las' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, _baseDate, _options) {\n if (date.getUTCHours() !== 1) {\n return formatRelativeLocalePlural[token];\n } else {\n return formatRelativeLocale[token];\n }\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['AC', 'DC'],\n abbreviated: ['AC', 'DC'],\n wide: ['antes de cristo', 'después de cristo']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['T1', 'T2', 'T3', 'T4'],\n wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n narrow: ['e', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n abbreviated: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],\n wide: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']\n};\nvar dayValues = {\n narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'],\n short: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'],\n abbreviated: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],\n wide: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mn',\n noon: 'md',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mn',\n noon: 'md',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'º';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(º)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(ac|dc|a|d)/i,\n abbreviated: /^(a\\.?\\s?c\\.?|a\\.?\\s?e\\.?\\s?c\\.?|d\\.?\\s?c\\.?|e\\.?\\s?c\\.?)/i,\n wide: /^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i\n};\nvar parseEraPatterns = {\n any: [/^ac/i, /^dc/i],\n wide: [/^(antes de cristo|antes de la era com[uú]n)/i, /^(despu[eé]s de cristo|era com[uú]n)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^[1234](º)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[efmajsond]/i,\n abbreviated: /^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,\n wide: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^e/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^en/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]\n};\nvar matchDayPatterns = {\n narrow: /^[dlmjvs]/i,\n short: /^(do|lu|ma|mi|ju|vi|s[áa])/i,\n abbreviated: /^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,\n wide: /^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^do/i, /^lu/i, /^ma/i, /^mi/i, /^ju/i, /^vi/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,\n any: /^([ap]\\.?\\s?m\\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mn/i,\n noon: /^md/i,\n morning: /mañana/i,\n afternoon: /tarde/i,\n evening: /tarde/i,\n night: /noche/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary Spanish locale.\n * @language Spanish\n * @iso-639-2 spa\n * @author Juan Angosto [@juanangosto]{@link https://github.com/juanangosto}\n * @author Guillermo Grau [@guigrpa]{@link https://github.com/guigrpa}\n * @author Fernando Agüero [@fjaguero]{@link https://github.com/fjaguero}\n * @author Gastón Haro [@harogaston]{@link https://github.com/harogaston}\n * @author Yago Carballo [@YagoCarballo]{@link https://github.com/YagoCarballo}\n */\nvar locale = {\n code: 'es',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n standalone: {\n one: 'vähem kui üks sekund',\n other: 'vähem kui {{count}} sekundit'\n },\n withPreposition: {\n one: 'vähem kui ühe sekundi',\n other: 'vähem kui {{count}} sekundi'\n }\n },\n xSeconds: {\n standalone: {\n one: 'üks sekund',\n other: '{{count}} sekundit'\n },\n withPreposition: {\n one: 'ühe sekundi',\n other: '{{count}} sekundi'\n }\n },\n halfAMinute: {\n standalone: 'pool minutit',\n withPreposition: 'poole minuti'\n },\n lessThanXMinutes: {\n standalone: {\n one: 'vähem kui üks minut',\n other: 'vähem kui {{count}} minutit'\n },\n withPreposition: {\n one: 'vähem kui ühe minuti',\n other: 'vähem kui {{count}} minuti'\n }\n },\n xMinutes: {\n standalone: {\n one: 'üks minut',\n other: '{{count}} minutit'\n },\n withPreposition: {\n one: 'ühe minuti',\n other: '{{count}} minuti'\n }\n },\n aboutXHours: {\n standalone: {\n one: 'umbes üks tund',\n other: 'umbes {{count}} tundi'\n },\n withPreposition: {\n one: 'umbes ühe tunni',\n other: 'umbes {{count}} tunni'\n }\n },\n xHours: {\n standalone: {\n one: 'üks tund',\n other: '{{count}} tundi'\n },\n withPreposition: {\n one: 'ühe tunni',\n other: '{{count}} tunni'\n }\n },\n xDays: {\n standalone: {\n one: 'üks päev',\n other: '{{count}} päeva'\n },\n withPreposition: {\n one: 'ühe päeva',\n other: '{{count}} päeva'\n }\n },\n aboutXWeeks: {\n standalone: {\n one: 'umbes üks nädal',\n other: 'umbes {{count}} nädalat'\n },\n withPreposition: {\n one: 'umbes ühe nädala',\n other: 'umbes {{count}} nädala'\n }\n },\n xWeeks: {\n standalone: {\n one: 'üks nädal',\n other: '{{count}} nädalat'\n },\n withPreposition: {\n one: 'ühe nädala',\n other: '{{count}} nädala'\n }\n },\n aboutXMonths: {\n standalone: {\n one: 'umbes üks kuu',\n other: 'umbes {{count}} kuud'\n },\n withPreposition: {\n one: 'umbes ühe kuu',\n other: 'umbes {{count}} kuu'\n }\n },\n xMonths: {\n standalone: {\n one: 'üks kuu',\n other: '{{count}} kuud'\n },\n withPreposition: {\n one: 'ühe kuu',\n other: '{{count}} kuu'\n }\n },\n aboutXYears: {\n standalone: {\n one: 'umbes üks aasta',\n other: 'umbes {{count}} aastat'\n },\n withPreposition: {\n one: 'umbes ühe aasta',\n other: 'umbes {{count}} aasta'\n }\n },\n xYears: {\n standalone: {\n one: 'üks aasta',\n other: '{{count}} aastat'\n },\n withPreposition: {\n one: 'ühe aasta',\n other: '{{count}} aasta'\n }\n },\n overXYears: {\n standalone: {\n one: 'rohkem kui üks aasta',\n other: 'rohkem kui {{count}} aastat'\n },\n withPreposition: {\n one: 'rohkem kui ühe aasta',\n other: 'rohkem kui {{count}} aasta'\n }\n },\n almostXYears: {\n standalone: {\n one: 'peaaegu üks aasta',\n other: 'peaaegu {{count}} aastat'\n },\n withPreposition: {\n one: 'peaaegu ühe aasta',\n other: 'peaaegu {{count}} aasta'\n }\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var usageGroup = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n var result;\n if (typeof usageGroup === 'string') {\n result = usageGroup;\n } else if (count === 1) {\n result = usageGroup.one;\n } else {\n result = usageGroup.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + ' pärast';\n } else {\n return result + ' eest';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d. MMMM y',\n long: 'd. MMMM y',\n medium: 'd. MMM y',\n short: 'dd.MM.y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'kell' {{time}}\",\n long: \"{{date}} 'kell' {{time}}\",\n medium: '{{date}}. {{time}}',\n short: '{{date}}. {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'eelmine' eeee 'kell' p\",\n yesterday: \"'eile kell' p\",\n today: \"'täna kell' p\",\n tomorrow: \"'homme kell' p\",\n nextWeek: \"'järgmine' eeee 'kell' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['e.m.a', 'm.a.j'],\n abbreviated: ['e.m.a', 'm.a.j'],\n wide: ['enne meie ajaarvamist', 'meie ajaarvamise järgi']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['K1', 'K2', 'K3', 'K4'],\n wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n narrow: ['J', 'V', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'],\n wide: ['jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember']\n};\nvar dayValues = {\n narrow: ['P', 'E', 'T', 'K', 'N', 'R', 'L'],\n short: ['P', 'E', 'T', 'K', 'N', 'R', 'L'],\n abbreviated: ['pühap.', 'esmasp.', 'teisip.', 'kolmap.', 'neljap.', 'reede.', 'laup.'],\n wide: ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'kesköö',\n noon: 'keskpäev',\n morning: 'hommik',\n afternoon: 'pärastlõuna',\n evening: 'õhtu',\n night: 'öö'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'kesköö',\n noon: 'keskpäev',\n morning: 'hommik',\n afternoon: 'pärastlõuna',\n evening: 'õhtu',\n night: 'öö'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'kesköö',\n noon: 'keskpäev',\n morning: 'hommik',\n afternoon: 'pärastlõuna',\n evening: 'õhtu',\n night: 'öö'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'keskööl',\n noon: 'keskpäeval',\n morning: 'hommikul',\n afternoon: 'pärastlõunal',\n evening: 'õhtul',\n night: 'öösel'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'keskööl',\n noon: 'keskpäeval',\n morning: 'hommikul',\n afternoon: 'pärastlõunal',\n evening: 'õhtul',\n night: 'öösel'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'keskööl',\n noon: 'keskpäeval',\n morning: 'hommikul',\n afternoon: 'pärastlõunal',\n evening: 'õhtul',\n night: 'öösel'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: monthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide',\n formattingValues: dayValues,\n defaultFormattingWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^\\d+\\./i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(e\\.m\\.a|m\\.a\\.j|eKr|pKr)/i,\n abbreviated: /^(e\\.m\\.a|m\\.a\\.j|eKr|pKr)/i,\n wide: /^(enne meie ajaarvamist|meie ajaarvamise järgi|enne Kristust|pärast Kristust)/i\n};\nvar parseEraPatterns = {\n any: [/^e/i, /^(m|p)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^K[1234]/i,\n wide: /^[1234](\\.)? kvartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jvmasond]/i,\n abbreviated: /^(jaan|veebr|märts|apr|mai|juuni|juuli|aug|sept|okt|nov|dets)/i,\n wide: /^(jaanuar|veebruar|märts|aprill|mai|juuni|juuli|august|september|oktoober|november|detsember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^v/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^v/i, /^mär/i, /^ap/i, /^mai/i, /^juun/i, /^juul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[petknrl]/i,\n short: /^[petknrl]/i,\n abbreviated: /^(püh?|esm?|tei?|kolm?|nel?|ree?|laup?)\\.?/i,\n wide: /^(pühapäev|esmaspäev|teisipäev|kolmapäev|neljapäev|reede|laupäev)/i\n};\nvar parseDayPatterns = {\n any: [/^p/i, /^e/i, /^t/i, /^k/i, /^n/i, /^r/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(am|pm|keskööl?|keskpäev(al)?|hommik(ul)?|pärastlõunal?|õhtul?|öö(sel)?)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^keskö/i,\n noon: /^keskp/i,\n morning: /hommik/i,\n afternoon: /pärastlõuna/i,\n evening: /õhtu/i,\n night: /öö/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Estonian locale.\n * @language Estonian\n * @iso-639-2 est\n * @author Priit Hansen [@HansenPriit]{@link https://github.com/priithansen}\n */\n\nvar locale = {\n code: 'et',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","function futureSeconds(text) {\n return text.replace(/sekuntia?/, 'sekunnin');\n}\nfunction futureMinutes(text) {\n return text.replace(/minuuttia?/, 'minuutin');\n}\nfunction futureHours(text) {\n return text.replace(/tuntia?/, 'tunnin');\n}\nfunction futureDays(text) {\n return text.replace(/päivää?/, 'päivän');\n}\nfunction futureWeeks(text) {\n return text.replace(/(viikko|viikkoa)/, 'viikon');\n}\nfunction futureMonths(text) {\n return text.replace(/(kuukausi|kuukautta)/, 'kuukauden');\n}\nfunction futureYears(text) {\n return text.replace(/(vuosi|vuotta)/, 'vuoden');\n}\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'alle sekunti',\n other: 'alle {{count}} sekuntia',\n futureTense: futureSeconds\n },\n xSeconds: {\n one: 'sekunti',\n other: '{{count}} sekuntia',\n futureTense: futureSeconds\n },\n halfAMinute: {\n one: 'puoli minuuttia',\n other: 'puoli minuuttia',\n futureTense: function futureTense(_text) {\n return 'puolen minuutin';\n }\n },\n lessThanXMinutes: {\n one: 'alle minuutti',\n other: 'alle {{count}} minuuttia',\n futureTense: futureMinutes\n },\n xMinutes: {\n one: 'minuutti',\n other: '{{count}} minuuttia',\n futureTense: futureMinutes\n },\n aboutXHours: {\n one: 'noin tunti',\n other: 'noin {{count}} tuntia',\n futureTense: futureHours\n },\n xHours: {\n one: 'tunti',\n other: '{{count}} tuntia',\n futureTense: futureHours\n },\n xDays: {\n one: 'päivä',\n other: '{{count}} päivää',\n futureTense: futureDays\n },\n aboutXWeeks: {\n one: 'noin viikko',\n other: 'noin {{count}} viikkoa',\n futureTense: futureWeeks\n },\n xWeeks: {\n one: 'viikko',\n other: '{{count}} viikkoa',\n futureTense: futureWeeks\n },\n aboutXMonths: {\n one: 'noin kuukausi',\n other: 'noin {{count}} kuukautta',\n futureTense: futureMonths\n },\n xMonths: {\n one: 'kuukausi',\n other: '{{count}} kuukautta',\n futureTense: futureMonths\n },\n aboutXYears: {\n one: 'noin vuosi',\n other: 'noin {{count}} vuotta',\n futureTense: futureYears\n },\n xYears: {\n one: 'vuosi',\n other: '{{count}} vuotta',\n futureTense: futureYears\n },\n overXYears: {\n one: 'yli vuosi',\n other: 'yli {{count}} vuotta',\n futureTense: futureYears\n },\n almostXYears: {\n one: 'lähes vuosi',\n other: 'lähes {{count}} vuotta',\n futureTense: futureYears\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var tokenValue = formatDistanceLocale[token];\n var result = count === 1 ? tokenValue.one : tokenValue.other.replace('{{count}}', String(count));\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return tokenValue.futureTense(result) + ' kuluttua';\n } else {\n return result + ' sitten';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'eeee d. MMMM y',\n long: 'd. MMMM y',\n medium: 'd. MMM y',\n short: 'd.M.y'\n};\nvar timeFormats = {\n full: 'HH.mm.ss zzzz',\n long: 'HH.mm.ss z',\n medium: 'HH.mm.ss',\n short: 'HH.mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'klo' {{time}}\",\n long: \"{{date}} 'klo' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'viime' eeee 'klo' p\",\n yesterday: \"'eilen klo' p\",\n today: \"'tänään klo' p\",\n tomorrow: \"'huomenna klo' p\",\n nextWeek: \"'ensi' eeee 'klo' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['eaa.', 'jaa.'],\n abbreviated: ['eaa.', 'jaa.'],\n wide: ['ennen ajanlaskun alkua', 'jälkeen ajanlaskun alun']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. kvartaali', '2. kvartaali', '3. kvartaali', '4. kvartaali']\n};\nvar monthValues = {\n narrow: ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'],\n abbreviated: ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'],\n wide: ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu']\n};\nvar formattingMonthValues = {\n narrow: monthValues.narrow,\n abbreviated: monthValues.abbreviated,\n wide: ['tammikuuta', 'helmikuuta', 'maaliskuuta', 'huhtikuuta', 'toukokuuta', 'kesäkuuta', 'heinäkuuta', 'elokuuta', 'syyskuuta', 'lokakuuta', 'marraskuuta', 'joulukuuta']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'K', 'T', 'P', 'L'],\n short: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],\n abbreviated: ['sunn.', 'maan.', 'tiis.', 'kesk.', 'torst.', 'perj.', 'la'],\n wide: ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai']\n};\nvar formattingDayValues = {\n narrow: dayValues.narrow,\n short: dayValues.short,\n abbreviated: dayValues.abbreviated,\n wide: ['sunnuntaina', 'maanantaina', 'tiistaina', 'keskiviikkona', 'torstaina', 'perjantaina', 'lauantaina']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'ap',\n pm: 'ip',\n midnight: 'keskiyö',\n noon: 'keskipäivä',\n morning: 'ap',\n afternoon: 'ip',\n evening: 'illalla',\n night: 'yöllä'\n },\n abbreviated: {\n am: 'ap',\n pm: 'ip',\n midnight: 'keskiyö',\n noon: 'keskipäivä',\n morning: 'ap',\n afternoon: 'ip',\n evening: 'illalla',\n night: 'yöllä'\n },\n wide: {\n am: 'ap',\n pm: 'ip',\n midnight: 'keskiyöllä',\n noon: 'keskipäivällä',\n morning: 'aamupäivällä',\n afternoon: 'iltapäivällä',\n evening: 'illalla',\n night: 'yöllä'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayValues,\n defaultFormattingWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(e|j)/i,\n abbreviated: /^(eaa.|jaa.)/i,\n wide: /^(ennen ajanlaskun alkua|jälkeen ajanlaskun alun)/i\n};\nvar parseEraPatterns = {\n any: [/^e/i, /^j/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234]\\.? kvartaali/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[thmkeslj]/i,\n abbreviated: /^(tammi|helmi|maalis|huhti|touko|kesä|heinä|elo|syys|loka|marras|joulu)/i,\n wide: /^(tammikuu|helmikuu|maaliskuu|huhtikuu|toukokuu|kesäkuu|heinäkuu|elokuu|syyskuu|lokakuu|marraskuu|joulukuu)(ta)?/i\n};\nvar parseMonthPatterns = {\n narrow: [/^t/i, /^h/i, /^m/i, /^h/i, /^t/i, /^k/i, /^h/i, /^e/i, /^s/i, /^l/i, /^m/i, /^j/i],\n any: [/^ta/i, /^hel/i, /^maa/i, /^hu/i, /^to/i, /^k/i, /^hei/i, /^e/i, /^s/i, /^l/i, /^mar/i, /^j/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtkpl]/i,\n short: /^(su|ma|ti|ke|to|pe|la)/i,\n abbreviated: /^(sunn.|maan.|tiis.|kesk.|torst.|perj.|la)/i,\n wide: /^(sunnuntai|maanantai|tiistai|keskiviikko|torstai|perjantai|lauantai)(na)?/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^k/i, /^t/i, /^p/i, /^l/i],\n any: [/^s/i, /^m/i, /^ti/i, /^k/i, /^to/i, /^p/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(ap|ip|keskiyö|keskipäivä|aamupäivällä|iltapäivällä|illalla|yöllä)/i,\n any: /^(ap|ip|keskiyöllä|keskipäivällä|aamupäivällä|iltapäivällä|illalla|yöllä)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^ap/i,\n pm: /^ip/i,\n midnight: /^keskiyö/i,\n noon: /^keskipäivä/i,\n morning: /aamupäivällä/i,\n afternoon: /iltapäivällä/i,\n evening: /illalla/i,\n night: /yöllä/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Finnish locale.\n * @language Finnish\n * @iso-639-2 fin\n * @author Pyry-Samuli Lahti [@Pyppe]{@link https://github.com/Pyppe}\n * @author Edo Rivai [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}\n * @author Samu Juvonen [@sjuvonen]{@link https://github.com/sjuvonen}\n */\n\nvar locale = {\n code: 'fi',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'moins d’une seconde',\n other: 'moins de {{count}} secondes'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} secondes'\n },\n halfAMinute: '30 secondes',\n lessThanXMinutes: {\n one: 'moins d’une minute',\n other: 'moins de {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'environ 1 heure',\n other: 'environ {{count}} heures'\n },\n xHours: {\n one: '1 heure',\n other: '{{count}} heures'\n },\n xDays: {\n one: '1 jour',\n other: '{{count}} jours'\n },\n aboutXWeeks: {\n one: 'environ 1 semaine',\n other: 'environ {{count}} semaines'\n },\n xWeeks: {\n one: '1 semaine',\n other: '{{count}} semaines'\n },\n aboutXMonths: {\n one: 'environ 1 mois',\n other: 'environ {{count}} mois'\n },\n xMonths: {\n one: '1 mois',\n other: '{{count}} mois'\n },\n aboutXYears: {\n one: 'environ 1 an',\n other: 'environ {{count}} ans'\n },\n xYears: {\n one: '1 an',\n other: '{{count}} ans'\n },\n overXYears: {\n one: 'plus d’un an',\n other: 'plus de {{count}} ans'\n },\n almostXYears: {\n one: 'presqu’un an',\n other: 'presque {{count}} ans'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var form = formatDistanceLocale[token];\n if (typeof form === 'string') {\n result = form;\n } else if (count === 1) {\n result = form.one;\n } else {\n result = form.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'dans ' + result;\n } else {\n return 'il y a ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'à' {{time}}\",\n long: \"{{date}} 'à' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"eeee 'dernier à' p\",\n yesterday: \"'hier à' p\",\n today: \"'aujourd’hui à' p\",\n tomorrow: \"'demain à' p'\",\n nextWeek: \"eeee 'prochain à' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['av. J.-C', 'ap. J.-C'],\n abbreviated: ['av. J.-C', 'ap. J.-C'],\n wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n narrow: ['T1', 'T2', 'T3', 'T4'],\n abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'mat.',\n afternoon: 'ap.m.',\n evening: 'soir',\n night: 'mat.'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'matin',\n afternoon: 'après-midi',\n evening: 'soir',\n night: 'matin'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'du matin',\n afternoon: 'de l’après-midi',\n evening: 'du soir',\n night: 'du matin'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n var unit = options === null || options === void 0 ? void 0 : options.unit;\n if (number === 0) return '0';\n var feminineUnits = ['year', 'week', 'hour', 'minute', 'second'];\n var suffix;\n if (number === 1) {\n suffix = unit && feminineUnits.includes(unit) ? 'ère' : 'er';\n } else {\n suffix = 'ème';\n }\n return number + suffix;\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^T?[1234]/i,\n abbreviated: /^[1234](er|ème|e)? trim\\.?/i,\n wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[lmjvsd]/i,\n short: /^(di|lu|ma|me|je|ve|sa)/i,\n abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^min/i,\n noon: /^mid/i,\n morning: /mat/i,\n afternoon: /ap/i,\n evening: /soir/i,\n night: /nuit/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\n\nvar locale = {\n code: 'fr',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'yy-MM-dd'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'à' {{time}}\",\n long: \"{{date}} 'à' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","// Same as fr\nimport formatDistance from \"../fr/_lib/formatDistance/index.js\";\nimport formatRelative from \"../fr/_lib/formatRelative/index.js\";\nimport localize from \"../fr/_lib/localize/index.js\";\nimport match from \"../fr/_lib/match/index.js\";\n// Unique for fr-CA\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale (Canada).\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n * @author Gabriele Petrioli [@gpetrioli]{@link https://github.com/gpetrioli}\n */\n\nvar locale = {\n code: 'fr-CA',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n // Unique for fr-CA\n options: {\n weekStartsOn: 0\n /* Sunday */,\n\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var translations = {\n about: 'körülbelül',\n over: 'több mint',\n almost: 'majdnem',\n lessthan: 'kevesebb mint'\n};\nvar withoutSuffixes = {\n xseconds: ' másodperc',\n halfaminute: 'fél perc',\n xminutes: ' perc',\n xhours: ' óra',\n xdays: ' nap',\n xweeks: ' hét',\n xmonths: ' hónap',\n xyears: ' év'\n};\nvar withSuffixes = {\n xseconds: {\n '-1': ' másodperccel ezelőtt',\n '1': ' másodperc múlva',\n '0': ' másodperce'\n },\n halfaminute: {\n '-1': 'fél perccel ezelőtt',\n '1': 'fél perc múlva',\n '0': 'fél perce'\n },\n xminutes: {\n '-1': ' perccel ezelőtt',\n '1': ' perc múlva',\n '0': ' perce'\n },\n xhours: {\n '-1': ' órával ezelőtt',\n '1': ' óra múlva',\n '0': ' órája'\n },\n xdays: {\n '-1': ' nappal ezelőtt',\n '1': ' nap múlva',\n '0': ' napja'\n },\n xweeks: {\n '-1': ' héttel ezelőtt',\n '1': ' hét múlva',\n '0': ' hete'\n },\n xmonths: {\n '-1': ' hónappal ezelőtt',\n '1': ' hónap múlva',\n '0': ' hónapja'\n },\n xyears: {\n '-1': ' évvel ezelőtt',\n '1': ' év múlva',\n '0': ' éve'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var adverb = token.match(/about|over|almost|lessthan/i);\n var unit = adverb ? token.replace(adverb[0], '') : token;\n var addSuffix = (options === null || options === void 0 ? void 0 : options.addSuffix) === true;\n var key = unit.toLowerCase();\n var comparison = (options === null || options === void 0 ? void 0 : options.comparison) || 0;\n var translated = addSuffix ? withSuffixes[key][comparison] : withoutSuffixes[key];\n var result = key === 'halfaminute' ? translated : count + translated;\n if (adverb) {\n var adv = adverb[0].toLowerCase();\n result = translations[adv] + ' ' + result;\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'y. MMMM d., EEEE',\n long: 'y. MMMM d.',\n medium: 'y. MMM d.',\n short: 'y. MM. dd.'\n};\nvar timeFormats = {\n full: 'H:mm:ss zzzz',\n long: 'H:mm:ss z',\n medium: 'H:mm:ss',\n short: 'H:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var accusativeWeekdays = ['vasárnap', 'hétfőn', 'kedden', 'szerdán', 'csütörtökön', 'pénteken', 'szombaton'];\nfunction week(isFuture) {\n return function (date) {\n var weekday = accusativeWeekdays[date.getUTCDay()];\n var prefix = isFuture ? '' : \"'múlt' \";\n return \"\".concat(prefix, \"'\").concat(weekday, \"' p'-kor'\");\n };\n}\nvar formatRelativeLocale = {\n lastWeek: week(false),\n yesterday: \"'tegnap' p'-kor'\",\n today: \"'ma' p'-kor'\",\n tomorrow: \"'holnap' p'-kor'\",\n nextWeek: week(true),\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['ie.', 'isz.'],\n abbreviated: ['i. e.', 'i. sz.'],\n wide: ['Krisztus előtt', 'időszámításunk szerint']\n};\nvar quarterValues = {\n narrow: ['1.', '2.', '3.', '4.'],\n abbreviated: ['1. n.év', '2. n.év', '3. n.év', '4. n.év'],\n wide: ['1. negyedév', '2. negyedév', '3. negyedév', '4. negyedév']\n};\nvar formattingQuarterValues = {\n narrow: ['I.', 'II.', 'III.', 'IV.'],\n abbreviated: ['I. n.év', 'II. n.év', 'III. n.év', 'IV. n.év'],\n wide: ['I. negyedév', 'II. negyedév', 'III. negyedév', 'IV. negyedév']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'Á', 'M', 'J', 'J', 'A', 'Sz', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'febr.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', 'dec.'],\n wide: ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december']\n};\nvar dayValues = {\n narrow: ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'],\n short: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],\n abbreviated: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],\n wide: ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'de.',\n pm: 'du.',\n midnight: 'éjfél',\n noon: 'dél',\n morning: 'reggel',\n afternoon: 'du.',\n evening: 'este',\n night: 'éjjel'\n },\n abbreviated: {\n am: 'de.',\n pm: 'du.',\n midnight: 'éjfél',\n noon: 'dél',\n morning: 'reggel',\n afternoon: 'du.',\n evening: 'este',\n night: 'éjjel'\n },\n wide: {\n am: 'de.',\n pm: 'du.',\n midnight: 'éjfél',\n noon: 'dél',\n morning: 'reggel',\n afternoon: 'délután',\n evening: 'este',\n night: 'éjjel'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n },\n formattingValues: formattingQuarterValues,\n defaultFormattingWidth: 'wide'\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(ie\\.|isz\\.)/i,\n abbreviated: /^(i\\.\\s?e\\.?|b?\\s?c\\s?e|i\\.\\s?sz\\.?)/i,\n wide: /^(Krisztus előtt|időszámításunk előtt|időszámításunk szerint|i\\. sz\\.)/i\n};\nvar parseEraPatterns = {\n narrow: [/ie/i, /isz/i],\n abbreviated: [/^(i\\.?\\s?e\\.?|b\\s?ce)/i, /^(i\\.?\\s?sz\\.?|c\\s?e)/i],\n any: [/előtt/i, /(szerint|i. sz.)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]\\.?/i,\n abbreviated: /^[1234]?\\.?\\s?n\\.év/i,\n wide: /^([1234]|I|II|III|IV)?\\.?\\s?negyedév/i\n};\nvar parseQuarterPatterns = {\n any: [/1|I$/i, /2|II$/i, /3|III/i, /4|IV/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmaásond]|sz/i,\n abbreviated: /^(jan\\.?|febr\\.?|márc\\.?|ápr\\.?|máj\\.?|jún\\.?|júl\\.?|aug\\.?|szept\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n wide: /^(január|február|március|április|május|június|július|augusztus|szeptember|október|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a|á/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s|sz/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^már/i, /^áp/i, /^máj/i, /^jún/i, /^júl/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^([vhkpc]|sz|cs|sz)/i,\n short: /^([vhkp]|sze|cs|szo)/i,\n abbreviated: /^([vhkp]|sze|cs|szo)/i,\n wide: /^(vasárnap|hétfő|kedd|szerda|csütörtök|péntek|szombat)/i\n};\nvar parseDayPatterns = {\n narrow: [/^v/i, /^h/i, /^k/i, /^sz/i, /^c/i, /^p/i, /^sz/i],\n any: [/^v/i, /^h/i, /^k/i, /^sze/i, /^c/i, /^p/i, /^szo/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^((de|du)\\.?|éjfél|délután|dél|reggel|este|éjjel)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^de\\.?/i,\n pm: /^du\\.?/i,\n midnight: /^éjf/i,\n noon: /^dé/i,\n morning: /reg/i,\n afternoon: /^délu\\.?/i,\n evening: /es/i,\n night: /éjj/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Hungarian locale.\n * @language Hungarian\n * @iso-639-2 hun\n * @author Pavlo Shpak [@pshpak]{@link https://github.com/pshpak}\n * @author Eduardo Pardo [@eduardopsll]{@link https://github.com/eduardopsll}\n * @author Zoltan Szepesi [@twodcube]{@link https://github.com/twodcube}\n */\n\nvar locale = {\n code: 'hu',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'meno di un secondo',\n other: 'meno di {{count}} secondi'\n },\n xSeconds: {\n one: 'un secondo',\n other: '{{count}} secondi'\n },\n halfAMinute: 'alcuni secondi',\n lessThanXMinutes: {\n one: 'meno di un minuto',\n other: 'meno di {{count}} minuti'\n },\n xMinutes: {\n one: 'un minuto',\n other: '{{count}} minuti'\n },\n aboutXHours: {\n one: \"circa un'ora\",\n other: 'circa {{count}} ore'\n },\n xHours: {\n one: \"un'ora\",\n other: '{{count}} ore'\n },\n xDays: {\n one: 'un giorno',\n other: '{{count}} giorni'\n },\n aboutXWeeks: {\n one: 'circa una settimana',\n other: 'circa {{count}} settimane'\n },\n xWeeks: {\n one: 'una settimana',\n other: '{{count}} settimane'\n },\n aboutXMonths: {\n one: 'circa un mese',\n other: 'circa {{count}} mesi'\n },\n xMonths: {\n one: 'un mese',\n other: '{{count}} mesi'\n },\n aboutXYears: {\n one: 'circa un anno',\n other: 'circa {{count}} anni'\n },\n xYears: {\n one: 'un anno',\n other: '{{count}} anni'\n },\n overXYears: {\n one: 'più di un anno',\n other: 'più di {{count}} anni'\n },\n almostXYears: {\n one: 'quasi un anno',\n other: 'quasi {{count}} anni'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'tra ' + result;\n } else {\n return result + ' fa';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nvar weekdays = ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'];\nfunction _lastWeek(day) {\n switch (day) {\n case 0:\n return \"'domenica scorsa alle' p\";\n default:\n return \"'\" + weekdays[day] + \" scorso alle' p\";\n }\n}\nfunction thisWeek(day) {\n return \"'\" + weekdays[day] + \" alle' p\";\n}\nfunction _nextWeek(day) {\n switch (day) {\n case 0:\n return \"'domenica prossima alle' p\";\n default:\n return \"'\" + weekdays[day] + \" prossimo alle' p\";\n }\n}\nvar formatRelativeLocale = {\n lastWeek: function lastWeek(date, baseDate, options) {\n var day = date.getUTCDay();\n if (isSameUTCWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return _lastWeek(day);\n }\n },\n yesterday: \"'ieri alle' p\",\n today: \"'oggi alle' p\",\n tomorrow: \"'domani alle' p\",\n nextWeek: function nextWeek(date, baseDate, options) {\n var day = date.getUTCDay();\n if (isSameUTCWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return _nextWeek(day);\n }\n },\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date, baseDate, options);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['aC', 'dC'],\n abbreviated: ['a.C.', 'd.C.'],\n wide: ['avanti Cristo', 'dopo Cristo']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['T1', 'T2', 'T3', 'T4'],\n wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n narrow: ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'],\n wide: ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre']\n};\nvar dayValues = {\n narrow: ['D', 'L', 'M', 'M', 'G', 'V', 'S'],\n short: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],\n abbreviated: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],\n wide: ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'm.',\n pm: 'p.',\n midnight: 'mezzanotte',\n noon: 'mezzogiorno',\n morning: 'mattina',\n afternoon: 'pomeriggio',\n evening: 'sera',\n night: 'notte'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'mezzanotte',\n noon: 'mezzogiorno',\n morning: 'mattina',\n afternoon: 'pomeriggio',\n evening: 'sera',\n night: 'notte'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'mezzanotte',\n noon: 'mezzogiorno',\n morning: 'mattina',\n afternoon: 'pomeriggio',\n evening: 'sera',\n night: 'notte'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'm.',\n pm: 'p.',\n midnight: 'mezzanotte',\n noon: 'mezzogiorno',\n morning: 'di mattina',\n afternoon: 'del pomeriggio',\n evening: 'di sera',\n night: 'di notte'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'mezzanotte',\n noon: 'mezzogiorno',\n morning: 'di mattina',\n afternoon: 'del pomeriggio',\n evening: 'di sera',\n night: 'di notte'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'mezzanotte',\n noon: 'mezzogiorno',\n morning: 'di mattina',\n afternoon: 'del pomeriggio',\n evening: 'di sera',\n night: 'di notte'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return String(number);\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(º)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(aC|dC)/i,\n abbreviated: /^(a\\.?\\s?C\\.?|a\\.?\\s?e\\.?\\s?v\\.?|d\\.?\\s?C\\.?|e\\.?\\s?v\\.?)/i,\n wide: /^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i\n};\nvar parseEraPatterns = {\n any: [/^a/i, /^(d|e)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^t[1234]/i,\n wide: /^[1234](º)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[gfmalsond]/i,\n abbreviated: /^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,\n wide: /^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^g/i, /^f/i, /^m/i, /^a/i, /^m/i, /^g/i, /^l/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ge/i, /^f/i, /^mar/i, /^ap/i, /^mag/i, /^gi/i, /^l/i, /^ag/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[dlmgvs]/i,\n short: /^(do|lu|ma|me|gi|ve|sa)/i,\n abbreviated: /^(dom|lun|mar|mer|gio|ven|sab)/i,\n wide: /^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^g/i, /^v/i, /^s/i],\n any: [/^d/i, /^l/i, /^ma/i, /^me/i, /^g/i, /^v/i, /^s/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|m\\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,\n any: /^([ap]\\.?\\s?m\\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mezza/i,\n noon: /^mezzo/i,\n morning: /mattina/i,\n afternoon: /pomeriggio/i,\n evening: /sera/i,\n night: /notte/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Italian locale.\n * @language Italian\n * @iso-639-2 ita\n * @author Alberto Restifo [@albertorestifo]{@link https://github.com/albertorestifo}\n * @author Giovanni Polimeni [@giofilo]{@link https://github.com/giofilo}\n * @author Vincenzo Carrese [@vin-car]{@link https://github.com/vin-car}\n */\n\nvar locale = {\n code: 'it',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: '1초 미만',\n other: '{{count}}초 미만'\n },\n xSeconds: {\n one: '1초',\n other: '{{count}}초'\n },\n halfAMinute: '30초',\n lessThanXMinutes: {\n one: '1분 미만',\n other: '{{count}}분 미만'\n },\n xMinutes: {\n one: '1분',\n other: '{{count}}분'\n },\n aboutXHours: {\n one: '약 1시간',\n other: '약 {{count}}시간'\n },\n xHours: {\n one: '1시간',\n other: '{{count}}시간'\n },\n xDays: {\n one: '1일',\n other: '{{count}}일'\n },\n aboutXWeeks: {\n one: '약 1주',\n other: '약 {{count}}주'\n },\n xWeeks: {\n one: '1주',\n other: '{{count}}주'\n },\n aboutXMonths: {\n one: '약 1개월',\n other: '약 {{count}}개월'\n },\n xMonths: {\n one: '1개월',\n other: '{{count}}개월'\n },\n aboutXYears: {\n one: '약 1년',\n other: '약 {{count}}년'\n },\n xYears: {\n one: '1년',\n other: '{{count}}년'\n },\n overXYears: {\n one: '1년 이상',\n other: '{{count}}년 이상'\n },\n almostXYears: {\n one: '거의 1년',\n other: '거의 {{count}}년'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + ' 후';\n } else {\n return result + ' 전';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'y년 M월 d일 EEEE',\n long: 'y년 M월 d일',\n medium: 'y.MM.dd',\n short: 'y.MM.dd'\n};\nvar timeFormats = {\n full: 'a H시 mm분 ss초 zzzz',\n long: 'a H:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'지난' eeee p\",\n yesterday: \"'어제' p\",\n today: \"'오늘' p\",\n tomorrow: \"'내일' p\",\n nextWeek: \"'다음' eeee p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['BC', 'AD'],\n abbreviated: ['BC', 'AD'],\n wide: ['기원전', '서기']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1분기', '2분기', '3분기', '4분기']\n};\nvar monthValues = {\n narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],\n abbreviated: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],\n wide: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월']\n};\nvar dayValues = {\n narrow: ['일', '월', '화', '수', '목', '금', '토'],\n short: ['일', '월', '화', '수', '목', '금', '토'],\n abbreviated: ['일', '월', '화', '수', '목', '금', '토'],\n wide: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일']\n};\nvar dayPeriodValues = {\n narrow: {\n am: '오전',\n pm: '오후',\n midnight: '자정',\n noon: '정오',\n morning: '아침',\n afternoon: '오후',\n evening: '저녁',\n night: '밤'\n },\n abbreviated: {\n am: '오전',\n pm: '오후',\n midnight: '자정',\n noon: '정오',\n morning: '아침',\n afternoon: '오후',\n evening: '저녁',\n night: '밤'\n },\n wide: {\n am: '오전',\n pm: '오후',\n midnight: '자정',\n noon: '정오',\n morning: '아침',\n afternoon: '오후',\n evening: '저녁',\n night: '밤'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: '오전',\n pm: '오후',\n midnight: '자정',\n noon: '정오',\n morning: '아침',\n afternoon: '오후',\n evening: '저녁',\n night: '밤'\n },\n abbreviated: {\n am: '오전',\n pm: '오후',\n midnight: '자정',\n noon: '정오',\n morning: '아침',\n afternoon: '오후',\n evening: '저녁',\n night: '밤'\n },\n wide: {\n am: '오전',\n pm: '오후',\n midnight: '자정',\n noon: '정오',\n morning: '아침',\n afternoon: '오후',\n evening: '저녁',\n night: '밤'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n var unit = String(options === null || options === void 0 ? void 0 : options.unit);\n switch (unit) {\n case 'minute':\n case 'second':\n return String(number);\n case 'date':\n return number + '일';\n default:\n return number + '번째';\n }\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(일|번째)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(기원전|서기)/i\n};\nvar parseEraPatterns = {\n any: [/^(bc|기원전)/i, /^(ad|서기)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234]사?분기/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^(1[012]|[123456789])/,\n abbreviated: /^(1[012]|[123456789])월/i,\n wide: /^(1[012]|[123456789])월/i\n};\nvar parseMonthPatterns = {\n any: [/^1월?$/, /^2/, /^3/, /^4/, /^5/, /^6/, /^7/, /^8/, /^9/, /^10/, /^11/, /^12/]\n};\nvar matchDayPatterns = {\n narrow: /^[일월화수목금토]/,\n short: /^[일월화수목금토]/,\n abbreviated: /^[일월화수목금토]/,\n wide: /^[일월화수목금토]요일/\n};\nvar parseDayPatterns = {\n any: [/^일/, /^월/, /^화/, /^수/, /^목/, /^금/, /^토/]\n};\nvar matchDayPeriodPatterns = {\n any: /^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^(am|오전)/i,\n pm: /^(pm|오후)/i,\n midnight: /^자정/i,\n noon: /^정오/i,\n morning: /^아침/i,\n afternoon: /^오후/i,\n evening: /^저녁/i,\n night: /^밤/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Korean locale.\n * @language Korean\n * @iso-639-2 kor\n * @author Hong Chulju [@angdev]{@link https://github.com/angdev}\n * @author Lee Seoyoen [@iamssen]{@link https://github.com/iamssen}\n * @author Taiki IKeda [@so99ynoodles]{@link https://github.com/so99ynoodles}\n */\n\nvar locale = {\n code: 'ko',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */,\n\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var translations = {\n xseconds_other: 'sekundė_sekundžių_sekundes',\n xminutes_one: 'minutė_minutės_minutę',\n xminutes_other: 'minutės_minučių_minutes',\n xhours_one: 'valanda_valandos_valandą',\n xhours_other: 'valandos_valandų_valandas',\n xdays_one: 'diena_dienos_dieną',\n xdays_other: 'dienos_dienų_dienas',\n xweeks_one: 'savaitė_savaitės_savaitę',\n xweeks_other: 'savaitės_savaičių_savaites',\n xmonths_one: 'mėnuo_mėnesio_mėnesį',\n xmonths_other: 'mėnesiai_mėnesių_mėnesius',\n xyears_one: 'metai_metų_metus',\n xyears_other: 'metai_metų_metus',\n about: 'apie',\n over: 'daugiau nei',\n almost: 'beveik',\n lessthan: 'mažiau nei'\n};\nvar translateSeconds = function translateSeconds(_number, addSuffix, _key, isFuture) {\n if (!addSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n};\nvar translateSingular = function translateSingular(_number, addSuffix, key, isFuture) {\n return !addSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2];\n};\nvar translate = function translate(number, addSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, addSuffix, key, isFuture);\n } else if (!addSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n};\nfunction special(number) {\n return number % 10 === 0 || number > 10 && number < 20;\n}\nfunction forms(key) {\n return translations[key].split('_');\n}\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: translateSeconds,\n other: translate\n },\n xSeconds: {\n one: translateSeconds,\n other: translate\n },\n halfAMinute: 'pusė minutės',\n lessThanXMinutes: {\n one: translateSingular,\n other: translate\n },\n xMinutes: {\n one: translateSingular,\n other: translate\n },\n aboutXHours: {\n one: translateSingular,\n other: translate\n },\n xHours: {\n one: translateSingular,\n other: translate\n },\n xDays: {\n one: translateSingular,\n other: translate\n },\n aboutXWeeks: {\n one: translateSingular,\n other: translate\n },\n xWeeks: {\n one: translateSingular,\n other: translate\n },\n aboutXMonths: {\n one: translateSingular,\n other: translate\n },\n xMonths: {\n one: translateSingular,\n other: translate\n },\n aboutXYears: {\n one: translateSingular,\n other: translate\n },\n xYears: {\n one: translateSingular,\n other: translate\n },\n overXYears: {\n one: translateSingular,\n other: translate\n },\n almostXYears: {\n one: translateSingular,\n other: translate\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var adverb = token.match(/about|over|almost|lessthan/i);\n var unit = adverb ? token.replace(adverb[0], '') : token;\n var isFuture = (options === null || options === void 0 ? void 0 : options.comparison) !== undefined && options.comparison > 0;\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one(count, (options === null || options === void 0 ? void 0 : options.addSuffix) === true, unit.toLowerCase() + '_one', isFuture);\n } else {\n result = tokenValue.other(count, (options === null || options === void 0 ? void 0 : options.addSuffix) === true, unit.toLowerCase() + '_other', isFuture);\n }\n if (adverb) {\n var _key2 = adverb[0].toLowerCase();\n result = translations[_key2] + ' ' + result;\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'po ' + result;\n } else {\n return 'prieš ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"y 'm'. MMMM d 'd'., EEEE\",\n long: \"y 'm'. MMMM d 'd'.\",\n medium: 'y-MM-dd',\n short: 'y-MM-dd'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'Praėjusį' eeee p\",\n yesterday: \"'Vakar' p\",\n today: \"'Šiandien' p\",\n tomorrow: \"'Rytoj' p\",\n nextWeek: 'eeee p',\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['pr. Kr.', 'po Kr.'],\n abbreviated: ['pr. Kr.', 'po Kr.'],\n wide: ['prieš Kristų', 'po Kristaus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['I ketv.', 'II ketv.', 'III ketv.', 'IV ketv.'],\n wide: ['I ketvirtis', 'II ketvirtis', 'III ketvirtis', 'IV ketvirtis']\n};\nvar formattingQuarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['I k.', 'II k.', 'III k.', 'IV k.'],\n wide: ['I ketvirtis', 'II ketvirtis', 'III ketvirtis', 'IV ketvirtis']\n};\nvar monthValues = {\n narrow: ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'],\n abbreviated: ['saus.', 'vas.', 'kov.', 'bal.', 'geg.', 'birž.', 'liep.', 'rugp.', 'rugs.', 'spal.', 'lapkr.', 'gruod.'],\n wide: ['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis']\n};\nvar formattingMonthValues = {\n narrow: ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'],\n abbreviated: ['saus.', 'vas.', 'kov.', 'bal.', 'geg.', 'birž.', 'liep.', 'rugp.', 'rugs.', 'spal.', 'lapkr.', 'gruod.'],\n wide: ['sausio', 'vasario', 'kovo', 'balandžio', 'gegužės', 'birželio', 'liepos', 'rugpjūčio', 'rugsėjo', 'spalio', 'lapkričio', 'gruodžio']\n};\nvar dayValues = {\n narrow: ['S', 'P', 'A', 'T', 'K', 'P', 'Š'],\n short: ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'],\n abbreviated: ['sk', 'pr', 'an', 'tr', 'kt', 'pn', 'št'],\n wide: ['sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', 'šeštadienis']\n};\nvar formattingDayValues = {\n narrow: ['S', 'P', 'A', 'T', 'K', 'P', 'Š'],\n short: ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'],\n abbreviated: ['sk', 'pr', 'an', 'tr', 'kt', 'pn', 'št'],\n wide: ['sekmadienį', 'pirmadienį', 'antradienį', 'trečiadienį', 'ketvirtadienį', 'penktadienį', 'šeštadienį']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'pr. p.',\n pm: 'pop.',\n midnight: 'vidurnaktis',\n noon: 'vidurdienis',\n morning: 'rytas',\n afternoon: 'diena',\n evening: 'vakaras',\n night: 'naktis'\n },\n abbreviated: {\n am: 'priešpiet',\n pm: 'popiet',\n midnight: 'vidurnaktis',\n noon: 'vidurdienis',\n morning: 'rytas',\n afternoon: 'diena',\n evening: 'vakaras',\n night: 'naktis'\n },\n wide: {\n am: 'priešpiet',\n pm: 'popiet',\n midnight: 'vidurnaktis',\n noon: 'vidurdienis',\n morning: 'rytas',\n afternoon: 'diena',\n evening: 'vakaras',\n night: 'naktis'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'pr. p.',\n pm: 'pop.',\n midnight: 'vidurnaktis',\n noon: 'perpiet',\n morning: 'rytas',\n afternoon: 'popietė',\n evening: 'vakaras',\n night: 'naktis'\n },\n abbreviated: {\n am: 'priešpiet',\n pm: 'popiet',\n midnight: 'vidurnaktis',\n noon: 'perpiet',\n morning: 'rytas',\n afternoon: 'popietė',\n evening: 'vakaras',\n night: 'naktis'\n },\n wide: {\n am: 'priešpiet',\n pm: 'popiet',\n midnight: 'vidurnaktis',\n noon: 'perpiet',\n morning: 'rytas',\n afternoon: 'popietė',\n evening: 'vakaras',\n night: 'naktis'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '-oji';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n formattingValues: formattingQuarterValues,\n defaultFormattingWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayValues,\n defaultFormattingWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(-oji)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^p(r|o)\\.?\\s?(kr\\.?|me)/i,\n abbreviated: /^(pr\\.\\s?(kr\\.|m\\.\\s?e\\.)|po\\s?kr\\.|mūsų eroje)/i,\n wide: /^(prieš Kristų|prieš mūsų erą|po Kristaus|mūsų eroje)/i\n};\nvar parseEraPatterns = {\n wide: [/prieš/i, /(po|mūsų)/i],\n any: [/^pr/i, /^(po|m)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^([1234])/i,\n abbreviated: /^(I|II|III|IV)\\s?ketv?\\.?/i,\n wide: /^(I|II|III|IV)\\s?ketvirtis/i\n};\nvar parseQuarterPatterns = {\n narrow: [/1/i, /2/i, /3/i, /4/i],\n any: [/I$/i, /II$/i, /III/i, /IV/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[svkbglr]/i,\n abbreviated: /^(saus\\.|vas\\.|kov\\.|bal\\.|geg\\.|birž\\.|liep\\.|rugp\\.|rugs\\.|spal\\.|lapkr\\.|gruod\\.)/i,\n wide: /^(sausi(s|o)|vasari(s|o)|kov(a|o)s|balandž?i(s|o)|gegužės?|birželi(s|o)|liep(a|os)|rugpjū(t|č)i(s|o)|rugsėj(is|o)|spali(s|o)|lapkri(t|č)i(s|o)|gruodž?i(s|o))/i\n};\nvar parseMonthPatterns = {\n narrow: [/^s/i, /^v/i, /^k/i, /^b/i, /^g/i, /^b/i, /^l/i, /^r/i, /^r/i, /^s/i, /^l/i, /^g/i],\n any: [/^saus/i, /^vas/i, /^kov/i, /^bal/i, /^geg/i, /^birž/i, /^liep/i, /^rugp/i, /^rugs/i, /^spal/i, /^lapkr/i, /^gruod/i]\n};\nvar matchDayPatterns = {\n narrow: /^[spatkš]/i,\n short: /^(sk|pr|an|tr|kt|pn|št)/i,\n abbreviated: /^(sk|pr|an|tr|kt|pn|št)/i,\n wide: /^(sekmadien(is|į)|pirmadien(is|į)|antradien(is|į)|trečiadien(is|į)|ketvirtadien(is|į)|penktadien(is|į)|šeštadien(is|į))/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^p/i, /^a/i, /^t/i, /^k/i, /^p/i, /^š/i],\n wide: [/^se/i, /^pi/i, /^an/i, /^tr/i, /^ke/i, /^pe/i, /^še/i],\n any: [/^sk/i, /^pr/i, /^an/i, /^tr/i, /^kt/i, /^pn/i, /^št/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(pr.\\s?p.|pop.|vidurnaktis|(vidurdienis|perpiet)|rytas|(diena|popietė)|vakaras|naktis)/i,\n any: /^(priešpiet|popiet$|vidurnaktis|(vidurdienis|perpiet)|rytas|(diena|popietė)|vakaras|naktis)/i\n};\nvar parseDayPeriodPatterns = {\n narrow: {\n am: /^pr/i,\n pm: /^pop./i,\n midnight: /^vidurnaktis/i,\n noon: /^(vidurdienis|perp)/i,\n morning: /rytas/i,\n afternoon: /(die|popietė)/i,\n evening: /vakaras/i,\n night: /naktis/i\n },\n any: {\n am: /^pr/i,\n pm: /^popiet$/i,\n midnight: /^vidurnaktis/i,\n noon: /^(vidurdienis|perp)/i,\n morning: /rytas/i,\n afternoon: /(die|popietė)/i,\n evening: /vakaras/i,\n night: /naktis/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Lithuanian locale.\n * @language Lithuanian\n * @iso-639-2 lit\n * @author Pavlo Shpak [@pshpak]{@link https://github.com/pshpak}\n * @author Eduardo Pardo [@eduardopsll]{@link https://github.com/eduardopsll}\n */\n\nvar locale = {\n code: 'lt',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","function buildLocalizeTokenFn(schema) {\n return function (count, options) {\n if (count === 1) {\n if (options !== null && options !== void 0 && options.addSuffix) {\n return schema.one[0].replace('{{time}}', schema.one[2]);\n } else {\n return schema.one[0].replace('{{time}}', schema.one[1]);\n }\n } else {\n var rem = count % 10 === 1 && count % 100 !== 11;\n if (options !== null && options !== void 0 && options.addSuffix) {\n return schema.other[0].replace('{{time}}', rem ? schema.other[3] : schema.other[4]).replace('{{count}}', String(count));\n } else {\n return schema.other[0].replace('{{time}}', rem ? schema.other[1] : schema.other[2]).replace('{{count}}', String(count));\n }\n }\n };\n}\nvar formatDistanceLocale = {\n lessThanXSeconds: buildLocalizeTokenFn({\n one: ['mazāk par {{time}}', 'sekundi', 'sekundi'],\n other: ['mazāk nekā {{count}} {{time}}', 'sekunde', 'sekundes', 'sekundes', 'sekundēm']\n }),\n xSeconds: buildLocalizeTokenFn({\n one: ['1 {{time}}', 'sekunde', 'sekundes'],\n other: ['{{count}} {{time}}', 'sekunde', 'sekundes', 'sekundes', 'sekundēm']\n }),\n halfAMinute: function halfAMinute(_count, options) {\n if (options !== null && options !== void 0 && options.addSuffix) {\n return 'pusminūtes';\n } else {\n return 'pusminūte';\n }\n },\n lessThanXMinutes: buildLocalizeTokenFn({\n one: ['mazāk par {{time}}', 'minūti', 'minūti'],\n other: ['mazāk nekā {{count}} {{time}}', 'minūte', 'minūtes', 'minūtes', 'minūtēm']\n }),\n xMinutes: buildLocalizeTokenFn({\n one: ['1 {{time}}', 'minūte', 'minūtes'],\n other: ['{{count}} {{time}}', 'minūte', 'minūtes', 'minūtes', 'minūtēm']\n }),\n aboutXHours: buildLocalizeTokenFn({\n one: ['apmēram 1 {{time}}', 'stunda', 'stundas'],\n other: ['apmēram {{count}} {{time}}', 'stunda', 'stundas', 'stundas', 'stundām']\n }),\n xHours: buildLocalizeTokenFn({\n one: ['1 {{time}}', 'stunda', 'stundas'],\n other: ['{{count}} {{time}}', 'stunda', 'stundas', 'stundas', 'stundām']\n }),\n xDays: buildLocalizeTokenFn({\n one: ['1 {{time}}', 'diena', 'dienas'],\n other: ['{{count}} {{time}}', 'diena', 'dienas', 'dienas', 'dienām']\n }),\n aboutXWeeks: buildLocalizeTokenFn({\n one: ['apmēram 1 {{time}}', 'nedēļa', 'nedēļas'],\n other: ['apmēram {{count}} {{time}}', 'nedēļa', 'nedēļu', 'nedēļas', 'nedēļām']\n }),\n xWeeks: buildLocalizeTokenFn({\n one: ['1 {{time}}', 'nedēļa', 'nedēļas'],\n other: ['{{count}} {{time}}',\n // TODO\n 'nedēļa', 'nedēļu', 'nedēļas', 'nedēļām']\n }),\n aboutXMonths: buildLocalizeTokenFn({\n one: ['apmēram 1 {{time}}', 'mēnesis', 'mēneša'],\n other: ['apmēram {{count}} {{time}}', 'mēnesis', 'mēneši', 'mēneša', 'mēnešiem']\n }),\n xMonths: buildLocalizeTokenFn({\n one: ['1 {{time}}', 'mēnesis', 'mēneša'],\n other: ['{{count}} {{time}}', 'mēnesis', 'mēneši', 'mēneša', 'mēnešiem']\n }),\n aboutXYears: buildLocalizeTokenFn({\n one: ['apmēram 1 {{time}}', 'gads', 'gada'],\n other: ['apmēram {{count}} {{time}}', 'gads', 'gadi', 'gada', 'gadiem']\n }),\n xYears: buildLocalizeTokenFn({\n one: ['1 {{time}}', 'gads', 'gada'],\n other: ['{{count}} {{time}}', 'gads', 'gadi', 'gada', 'gadiem']\n }),\n overXYears: buildLocalizeTokenFn({\n one: ['ilgāk par 1 {{time}}', 'gadu', 'gadu'],\n other: ['vairāk nekā {{count}} {{time}}', 'gads', 'gadi', 'gada', 'gadiem']\n }),\n almostXYears: buildLocalizeTokenFn({\n one: ['gandrīz 1 {{time}}', 'gads', 'gada'],\n other: ['vairāk nekā {{count}} {{time}}', 'gads', 'gadi', 'gada', 'gadiem']\n })\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result = formatDistanceLocale[token](count, options);\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'pēc ' + result;\n } else {\n return 'pirms ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"EEEE, y. 'gada' d. MMMM\",\n long: \"y. 'gada' d. MMMM\",\n medium: 'dd.MM.y.',\n short: 'dd.MM.y.'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'plkst.' {{time}}\",\n long: \"{{date}} 'plkst.' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nvar weekdays = ['svētdienā', 'pirmdienā', 'otrdienā', 'trešdienā', 'ceturtdienā', 'piektdienā', 'sestdienā'];\nvar formatRelativeLocale = {\n lastWeek: function lastWeek(date, baseDate, options) {\n if (isSameUTCWeek(date, baseDate, options)) {\n return \"eeee 'plkst.' p\";\n }\n var weekday = weekdays[date.getUTCDay()];\n return \"'Pagājušā \" + weekday + \" plkst.' p\";\n },\n yesterday: \"'Vakar plkst.' p\",\n today: \"'Šodien plkst.' p\",\n tomorrow: \"'Rīt plkst.' p\",\n nextWeek: function nextWeek(date, baseDate, options) {\n if (isSameUTCWeek(date, baseDate, options)) {\n return \"eeee 'plkst.' p\";\n }\n var weekday = weekdays[date.getUTCDay()];\n return \"'Nākamajā \" + weekday + \" plkst.' p\";\n },\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date, baseDate, options);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['p.m.ē', 'm.ē'],\n abbreviated: ['p. m. ē.', 'm. ē.'],\n wide: ['pirms mūsu ēras', 'mūsu ērā']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1. cet.', '2. cet.', '3. cet.', '4. cet.'],\n wide: ['pirmais ceturksnis', 'otrais ceturksnis', 'trešais ceturksnis', 'ceturtais ceturksnis']\n};\nvar formattingQuarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1. cet.', '2. cet.', '3. cet.', '4. cet.'],\n wide: ['pirmajā ceturksnī', 'otrajā ceturksnī', 'trešajā ceturksnī', 'ceturtajā ceturksnī']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['janv.', 'febr.', 'marts', 'apr.', 'maijs', 'jūn.', 'jūl.', 'aug.', 'sept.', 'okt.', 'nov.', 'dec.'],\n wide: ['janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', 'septembris', 'oktobris', 'novembris', 'decembris']\n};\nvar formattingMonthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['janv.', 'febr.', 'martā', 'apr.', 'maijs', 'jūn.', 'jūl.', 'aug.', 'sept.', 'okt.', 'nov.', 'dec.'],\n wide: ['janvārī', 'februārī', 'martā', 'aprīlī', 'maijā', 'jūnijā', 'jūlijā', 'augustā', 'septembrī', 'oktobrī', 'novembrī', 'decembrī']\n};\nvar dayValues = {\n narrow: ['S', 'P', 'O', 'T', 'C', 'P', 'S'],\n short: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'],\n abbreviated: ['svētd.', 'pirmd.', 'otrd.', 'trešd.', 'ceturtd.', 'piektd.', 'sestd.'],\n wide: ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena']\n};\nvar formattingDayValues = {\n narrow: ['S', 'P', 'O', 'T', 'C', 'P', 'S'],\n short: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'],\n abbreviated: ['svētd.', 'pirmd.', 'otrd.', 'trešd.', 'ceturtd.', 'piektd.', 'sestd.'],\n wide: ['svētdienā', 'pirmdienā', 'otrdienā', 'trešdienā', 'ceturtdienā', 'piektdienā', 'sestdienā']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'am',\n pm: 'pm',\n midnight: 'pusn.',\n noon: 'pusd.',\n morning: 'rīts',\n afternoon: 'diena',\n evening: 'vakars',\n night: 'nakts'\n },\n abbreviated: {\n am: 'am',\n pm: 'pm',\n midnight: 'pusn.',\n noon: 'pusd.',\n morning: 'rīts',\n afternoon: 'pēcpusd.',\n evening: 'vakars',\n night: 'nakts'\n },\n wide: {\n am: 'am',\n pm: 'pm',\n midnight: 'pusnakts',\n noon: 'pusdienlaiks',\n morning: 'rīts',\n afternoon: 'pēcpusdiena',\n evening: 'vakars',\n night: 'nakts'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'am',\n pm: 'pm',\n midnight: 'pusn.',\n noon: 'pusd.',\n morning: 'rītā',\n afternoon: 'dienā',\n evening: 'vakarā',\n night: 'naktī'\n },\n abbreviated: {\n am: 'am',\n pm: 'pm',\n midnight: 'pusn.',\n noon: 'pusd.',\n morning: 'rītā',\n afternoon: 'pēcpusd.',\n evening: 'vakarā',\n night: 'naktī'\n },\n wide: {\n am: 'am',\n pm: 'pm',\n midnight: 'pusnaktī',\n noon: 'pusdienlaikā',\n morning: 'rītā',\n afternoon: 'pēcpusdienā',\n evening: 'vakarā',\n night: 'naktī'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n formattingValues: formattingQuarterValues,\n defaultFormattingWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayValues,\n defaultFormattingWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\./i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(p\\.m\\.ē|m\\.ē)/i,\n abbreviated: /^(p\\. m\\. ē\\.|m\\. ē\\.)/i,\n wide: /^(pirms mūsu ēras|mūsu ērā)/i\n};\nvar parseEraPatterns = {\n any: [/^p/i, /^m/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234](\\. cet\\.)/i,\n wide: /^(pirma(is|jā)|otra(is|jā)|treša(is|jā)|ceturta(is|jā)) ceturksn(is|ī)/i\n};\nvar parseQuarterPatterns = {\n narrow: [/^1/i, /^2/i, /^3/i, /^4/i],\n abbreviated: [/^1/i, /^2/i, /^3/i, /^4/i],\n wide: [/^p/i, /^o/i, /^t/i, /^c/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(janv\\.|febr\\.|marts|apr\\.|maijs|jūn\\.|jūl\\.|aug\\.|sept\\.|okt\\.|nov\\.|dec\\.)/i,\n wide: /^(janvār(is|ī)|februār(is|ī)|mart[sā]|aprīl(is|ī)|maij[sā]|jūnij[sā]|jūlij[sā]|august[sā]|septembr(is|ī)|oktobr(is|ī)|novembr(is|ī)|decembr(is|ī))/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^mai/i, /^jūn/i, /^jūl/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[spotc]/i,\n short: /^(sv|pi|o|t|c|pk|s)/i,\n abbreviated: /^(svētd\\.|pirmd\\.|otrd.\\|trešd\\.|ceturtd\\.|piektd\\.|sestd\\.)/i,\n wide: /^(svētdien(a|ā)|pirmdien(a|ā)|otrdien(a|ā)|trešdien(a|ā)|ceturtdien(a|ā)|piektdien(a|ā)|sestdien(a|ā))/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^p/i, /^o/i, /^t/i, /^c/i, /^p/i, /^s/i],\n any: [/^sv/i, /^pi/i, /^o/i, /^t/i, /^c/i, /^p/i, /^se/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(am|pm|pusn\\.|pusd\\.|rīt(s|ā)|dien(a|ā)|vakar(s|ā)|nakt(s|ī))/,\n abbreviated: /^(am|pm|pusn\\.|pusd\\.|rīt(s|ā)|pēcpusd\\.|vakar(s|ā)|nakt(s|ī))/,\n wide: /^(am|pm|pusnakt(s|ī)|pusdienlaik(s|ā)|rīt(s|ā)|pēcpusdien(a|ā)|vakar(s|ā)|nakt(s|ī))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^am/i,\n pm: /^pm/i,\n midnight: /^pusn/i,\n noon: /^pusd/i,\n morning: /^r/i,\n afternoon: /^(d|pēc)/i,\n evening: /^v/i,\n night: /^n/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'wide',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Latvian locale (Latvia).\n * @language Latvian\n * @iso-639-2 lav\n * @author Rūdolfs Puķītis [@prudolfs]{@link https://github.com/prudolfs}\n */\n\nvar locale = {\n code: 'lv',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'mindre enn ett sekund',\n other: 'mindre enn {{count}} sekunder'\n },\n xSeconds: {\n one: 'ett sekund',\n other: '{{count}} sekunder'\n },\n halfAMinute: 'et halvt minutt',\n lessThanXMinutes: {\n one: 'mindre enn ett minutt',\n other: 'mindre enn {{count}} minutter'\n },\n xMinutes: {\n one: 'ett minutt',\n other: '{{count}} minutter'\n },\n aboutXHours: {\n one: 'omtrent en time',\n other: 'omtrent {{count}} timer'\n },\n xHours: {\n one: 'en time',\n other: '{{count}} timer'\n },\n xDays: {\n one: 'en dag',\n other: '{{count}} dager'\n },\n aboutXWeeks: {\n one: 'omtrent en uke',\n other: 'omtrent {{count}} uker'\n },\n xWeeks: {\n one: 'en uke',\n other: '{{count}} uker'\n },\n aboutXMonths: {\n one: 'omtrent en måned',\n other: 'omtrent {{count}} måneder'\n },\n xMonths: {\n one: 'en måned',\n other: '{{count}} måneder'\n },\n aboutXYears: {\n one: 'omtrent ett år',\n other: 'omtrent {{count}} år'\n },\n xYears: {\n one: 'ett år',\n other: '{{count}} år'\n },\n overXYears: {\n one: 'over ett år',\n other: 'over {{count}} år'\n },\n almostXYears: {\n one: 'nesten ett år',\n other: 'nesten {{count}} år'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'om ' + result;\n } else {\n return result + ' siden';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d. MMMM y',\n long: 'd. MMMM y',\n medium: 'd. MMM y',\n short: 'dd.MM.y'\n};\nvar timeFormats = {\n full: \"'kl'. HH:mm:ss zzzz\",\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'kl.' {{time}}\",\n long: \"{{date}} 'kl.' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'forrige' eeee 'kl.' p\",\n yesterday: \"'i går kl.' p\",\n today: \"'i dag kl.' p\",\n tomorrow: \"'i morgen kl.' p\",\n nextWeek: \"EEEE 'kl.' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['f.Kr.', 'e.Kr.'],\n abbreviated: ['f.Kr.', 'e.Kr.'],\n wide: ['før Kristus', 'etter Kristus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mars', 'apr.', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'],\n wide: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n short: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],\n abbreviated: ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'],\n wide: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på etterm.',\n evening: 'på kvelden',\n night: 'på natten'\n },\n abbreviated: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på etterm.',\n evening: 'på kvelden',\n night: 'på natten'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morgenen',\n afternoon: 'på ettermiddagen',\n evening: 'på kvelden',\n night: 'på natten'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n abbreviated: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n wide: /^(før Kristus|før vår tid|etter Kristus|vår tid)/i\n};\nvar parseEraPatterns = {\n any: [/^f/i, /^e/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? kvartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\\.?/i,\n wide: /^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^aug/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtofl]/i,\n short: /^(sø|ma|ti|on|to|fr|lø)/i,\n abbreviated: /^(søn|man|tir|ons|tor|fre|lør)/i,\n wide: /^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i\n};\nvar parseDayPatterns = {\n any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,\n any: /^([ap]\\.?\\s?m\\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a(\\.?\\s?m\\.?)?$/i,\n pm: /^p(\\.?\\s?m\\.?)?$/i,\n midnight: /^midn/i,\n noon: /^midd/i,\n morning: /morgen/i,\n afternoon: /ettermiddag/i,\n evening: /kveld/i,\n night: /natt/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Norwegian Bokmål locale.\n * @language Norwegian Bokmål\n * @iso-639-2 nob\n * @author Hans-Kristian Koren [@Hanse]{@link https://github.com/Hanse}\n * @author Mikolaj Grzyb [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}\n * @author Dag Stuan [@dagstuan]{@link https://github.com/dagstuan}\n */\n\nvar locale = {\n code: 'nb',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'minder dan een seconde',\n other: 'minder dan {{count}} seconden'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} seconden'\n },\n halfAMinute: 'een halve minuut',\n lessThanXMinutes: {\n one: 'minder dan een minuut',\n other: 'minder dan {{count}} minuten'\n },\n xMinutes: {\n one: 'een minuut',\n other: '{{count}} minuten'\n },\n aboutXHours: {\n one: 'ongeveer 1 uur',\n other: 'ongeveer {{count}} uur'\n },\n xHours: {\n one: '1 uur',\n other: '{{count}} uur'\n },\n xDays: {\n one: '1 dag',\n other: '{{count}} dagen'\n },\n aboutXWeeks: {\n one: 'ongeveer 1 week',\n other: 'ongeveer {{count}} weken'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weken'\n },\n aboutXMonths: {\n one: 'ongeveer 1 maand',\n other: 'ongeveer {{count}} maanden'\n },\n xMonths: {\n one: '1 maand',\n other: '{{count}} maanden'\n },\n aboutXYears: {\n one: 'ongeveer 1 jaar',\n other: 'ongeveer {{count}} jaar'\n },\n xYears: {\n one: '1 jaar',\n other: '{{count}} jaar'\n },\n overXYears: {\n one: 'meer dan 1 jaar',\n other: 'meer dan {{count}} jaar'\n },\n almostXYears: {\n one: 'bijna 1 jaar',\n other: 'bijna {{count}} jaar'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'over ' + result;\n } else {\n return result + ' geleden';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd-MM-y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'om' {{time}}\",\n long: \"{{date}} 'om' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'afgelopen' eeee 'om' p\",\n yesterday: \"'gisteren om' p\",\n today: \"'vandaag om' p\",\n tomorrow: \"'morgen om' p\",\n nextWeek: \"eeee 'om' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.C.', 'n.C.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['voor Christus', 'na Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['K1', 'K2', 'K3', 'K4'],\n wide: ['1e kwartaal', '2e kwartaal', '3e kwartaal', '4e kwartaal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december']\n};\nvar dayValues = {\n narrow: ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'],\n short: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n abbreviated: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n wide: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'e';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)e?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^([vn]\\.? ?C\\.?)/,\n abbreviated: /^([vn]\\. ?Chr\\.?)/,\n wide: /^((voor|na) Christus)/\n};\nvar parseEraPatterns = {\n any: [/^v/, /^n/]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^K[1234]/i,\n wide: /^[1234]e kwartaal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,\n wide: /^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^jan/i, /^feb/i, /^m(r|a)/i, /^apr/i, /^mei/i, /^jun/i, /^jul/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]\n};\nvar matchDayPatterns = {\n narrow: /^[zmdwv]/i,\n short: /^(zo|ma|di|wo|do|vr|za)/i,\n abbreviated: /^(zon|maa|din|woe|don|vri|zat)/i,\n wide: /^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i\n};\nvar parseDayPatterns = {\n narrow: [/^z/i, /^m/i, /^d/i, /^w/i, /^d/i, /^v/i, /^z/i],\n any: [/^zo/i, /^ma/i, /^di/i, /^wo/i, /^do/i, /^vr/i, /^za/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^am/i,\n pm: /^pm/i,\n midnight: /^middernacht/i,\n noon: /^het middaguur/i,\n morning: /ochtend/i,\n afternoon: /middag/i,\n evening: /avond/i,\n night: /nacht/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Dutch locale.\n * @language Dutch\n * @iso-639-2 nld\n * @author Jorik Tangelder [@jtangelder]{@link https://github.com/jtangelder}\n * @author Ruben Stolk [@rubenstolk]{@link https://github.com/rubenstolk}\n * @author Lode Vanhove [@bitcrumb]{@link https://github.com/bitcrumb}\n * @author Edo Rivai [@edorivai]{@link https://github.com/edorivai}\n * @author Niels Keurentjes [@curry684]{@link https://github.com/curry684}\n * @author Stefan Vermaas [@stefanvermaas]{@link https://github.com/stefanvermaas}\n */\n\nvar locale = {\n code: 'nl',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'minder dan een seconde',\n other: 'minder dan {{count}} seconden'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} seconden'\n },\n halfAMinute: 'een halve minuut',\n lessThanXMinutes: {\n one: 'minder dan een minuut',\n other: 'minder dan {{count}} minuten'\n },\n xMinutes: {\n one: 'een minuut',\n other: '{{count}} minuten'\n },\n aboutXHours: {\n one: 'ongeveer 1 uur',\n other: 'ongeveer {{count}} uur'\n },\n xHours: {\n one: '1 uur',\n other: '{{count}} uur'\n },\n xDays: {\n one: '1 dag',\n other: '{{count}} dagen'\n },\n aboutXWeeks: {\n one: 'ongeveer 1 week',\n other: 'ongeveer {{count}} weken'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weken'\n },\n aboutXMonths: {\n one: 'ongeveer 1 maand',\n other: 'ongeveer {{count}} maanden'\n },\n xMonths: {\n one: '1 maand',\n other: '{{count}} maanden'\n },\n aboutXYears: {\n one: 'ongeveer 1 jaar',\n other: 'ongeveer {{count}} jaar'\n },\n xYears: {\n one: '1 jaar',\n other: '{{count}} jaar'\n },\n overXYears: {\n one: 'meer dan 1 jaar',\n other: 'meer dan {{count}} jaar'\n },\n almostXYears: {\n one: 'bijna 1 jaar',\n other: 'bijna {{count}} jaar'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'over ' + result;\n } else {\n return result + ' geleden';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd.MM.y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'om' {{time}}\",\n long: \"{{date}} 'om' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'vorige' eeee 'om' p\",\n yesterday: \"'gisteren om' p\",\n today: \"'vandaag om' p\",\n tomorrow: \"'morgen om' p\",\n nextWeek: \"eeee 'om' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.C.', 'n.C.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['voor Christus', 'na Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['K1', 'K2', 'K3', 'K4'],\n wide: ['1e kwartaal', '2e kwartaal', '3e kwartaal', '4e kwartaal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december']\n};\nvar dayValues = {\n narrow: ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'],\n short: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n abbreviated: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n wide: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middag',\n morning: \"'s ochtends\",\n afternoon: \"'s namiddags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middag',\n morning: \"'s ochtends\",\n afternoon: \"'s namiddags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middag',\n morning: \"'s ochtends\",\n afternoon: \"'s namiddags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'e';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)e?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^([vn]\\.? ?C\\.?)/,\n abbreviated: /^([vn]\\. ?Chr\\.?)/,\n wide: /^((voor|na) Christus)/\n};\nvar parseEraPatterns = {\n any: [/^v/, /^n/]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^K[1234]/i,\n wide: /^[1234]e kwartaal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,\n wide: /^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^jan/i, /^feb/i, /^m(r|a)/i, /^apr/i, /^mei/i, /^jun/i, /^jul/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]\n};\nvar matchDayPatterns = {\n narrow: /^[zmdwv]/i,\n short: /^(zo|ma|di|wo|do|vr|za)/i,\n abbreviated: /^(zon|maa|din|woe|don|vri|zat)/i,\n wide: /^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i\n};\nvar parseDayPatterns = {\n narrow: [/^z/i, /^m/i, /^d/i, /^w/i, /^d/i, /^v/i, /^z/i],\n any: [/^zo/i, /^ma/i, /^di/i, /^wo/i, /^do/i, /^vr/i, /^za/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^am/i,\n pm: /^pm/i,\n midnight: /^middernacht/i,\n noon: /^het middaguur/i,\n morning: /ochtend/i,\n afternoon: /middag/i,\n evening: /avond/i,\n night: /nacht/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Dutch locale.\n * @language Dutch\n * @iso-639-2 nld\n * @author Jorik Tangelder [@jtangelder]{@link https://github.com/jtangelder}\n * @author Ruben Stolk [@rubenstolk]{@link https://github.com/rubenstolk}\n * @author Lode Vanhove [@bitcrumb]{@link https://github.com/bitcrumb}\n * @author Alex Hoeing [@dcbn]{@link https://github.com/dcbn}\n */\n\nvar locale = {\n code: 'nl-BE',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: {\n regular: 'mniej niż sekunda',\n past: 'mniej niż sekundę',\n future: 'mniej niż sekundę'\n },\n twoFour: 'mniej niż {{count}} sekundy',\n other: 'mniej niż {{count}} sekund'\n },\n xSeconds: {\n one: {\n regular: 'sekunda',\n past: 'sekundę',\n future: 'sekundę'\n },\n twoFour: '{{count}} sekundy',\n other: '{{count}} sekund'\n },\n halfAMinute: {\n one: 'pół minuty',\n twoFour: 'pół minuty',\n other: 'pół minuty'\n },\n lessThanXMinutes: {\n one: {\n regular: 'mniej niż minuta',\n past: 'mniej niż minutę',\n future: 'mniej niż minutę'\n },\n twoFour: 'mniej niż {{count}} minuty',\n other: 'mniej niż {{count}} minut'\n },\n xMinutes: {\n one: {\n regular: 'minuta',\n past: 'minutę',\n future: 'minutę'\n },\n twoFour: '{{count}} minuty',\n other: '{{count}} minut'\n },\n aboutXHours: {\n one: {\n regular: 'około godziny',\n past: 'około godziny',\n future: 'około godzinę'\n },\n twoFour: 'około {{count}} godziny',\n other: 'około {{count}} godzin'\n },\n xHours: {\n one: {\n regular: 'godzina',\n past: 'godzinę',\n future: 'godzinę'\n },\n twoFour: '{{count}} godziny',\n other: '{{count}} godzin'\n },\n xDays: {\n one: {\n regular: 'dzień',\n past: 'dzień',\n future: '1 dzień'\n },\n twoFour: '{{count}} dni',\n other: '{{count}} dni'\n },\n aboutXWeeks: {\n one: 'około tygodnia',\n twoFour: 'około {{count}} tygodni',\n other: 'około {{count}} tygodni'\n },\n xWeeks: {\n one: 'tydzień',\n twoFour: '{{count}} tygodnie',\n other: '{{count}} tygodni'\n },\n aboutXMonths: {\n one: 'około miesiąc',\n twoFour: 'około {{count}} miesiące',\n other: 'około {{count}} miesięcy'\n },\n xMonths: {\n one: 'miesiąc',\n twoFour: '{{count}} miesiące',\n other: '{{count}} miesięcy'\n },\n aboutXYears: {\n one: 'około rok',\n twoFour: 'około {{count}} lata',\n other: 'około {{count}} lat'\n },\n xYears: {\n one: 'rok',\n twoFour: '{{count}} lata',\n other: '{{count}} lat'\n },\n overXYears: {\n one: 'ponad rok',\n twoFour: 'ponad {{count}} lata',\n other: 'ponad {{count}} lat'\n },\n almostXYears: {\n one: 'prawie rok',\n twoFour: 'prawie {{count}} lata',\n other: 'prawie {{count}} lat'\n }\n};\nfunction declensionGroup(scheme, count) {\n if (count === 1) {\n return scheme.one;\n }\n var rem100 = count % 100; // ends with 11-20\n\n if (rem100 <= 20 && rem100 > 10) {\n return scheme.other;\n }\n var rem10 = rem100 % 10; // ends with 2, 3, 4\n\n if (rem10 >= 2 && rem10 <= 4) {\n return scheme.twoFour;\n }\n return scheme.other;\n}\nfunction declension(scheme, count, time) {\n var group = declensionGroup(scheme, count);\n var finalText = typeof group === 'string' ? group : group[time];\n return finalText.replace('{{count}}', String(count));\n}\nvar formatDistance = function formatDistance(token, count, options) {\n var scheme = formatDistanceLocale[token];\n if (!(options !== null && options !== void 0 && options.addSuffix)) {\n return declension(scheme, count, 'regular');\n }\n if (options.comparison && options.comparison > 0) {\n return 'za ' + declension(scheme, count, 'future');\n } else {\n return declension(scheme, count, 'past') + ' temu';\n }\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, do MMMM y',\n long: 'do MMMM y',\n medium: 'do MMM y',\n short: 'dd.MM.y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nvar adjectivesLastWeek = {\n masculine: 'ostatni',\n feminine: 'ostatnia'\n};\nvar adjectivesThisWeek = {\n masculine: 'ten',\n feminine: 'ta'\n};\nvar adjectivesNextWeek = {\n masculine: 'następny',\n feminine: 'następna'\n};\nvar dayGrammaticalGender = {\n 0: 'feminine',\n 1: 'masculine',\n 2: 'masculine',\n 3: 'feminine',\n 4: 'masculine',\n 5: 'masculine',\n 6: 'feminine'\n};\nfunction dayAndTimeWithAdjective(token, date, baseDate, options) {\n var adjectives;\n if (isSameUTCWeek(date, baseDate, options)) {\n adjectives = adjectivesThisWeek;\n } else if (token === 'lastWeek') {\n adjectives = adjectivesLastWeek;\n } else if (token === 'nextWeek') {\n adjectives = adjectivesNextWeek;\n } else {\n throw new Error(\"Cannot determine adjectives for token \".concat(token));\n }\n var day = date.getUTCDay();\n var grammaticalGender = dayGrammaticalGender[day];\n var adjective = adjectives[grammaticalGender];\n return \"'\".concat(adjective, \"' eeee 'o' p\");\n}\nvar formatRelativeLocale = {\n lastWeek: dayAndTimeWithAdjective,\n yesterday: \"'wczoraj o' p\",\n today: \"'dzisiaj o' p\",\n tomorrow: \"'jutro o' p\",\n nextWeek: dayAndTimeWithAdjective,\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(token, date, baseDate, options);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['p.n.e.', 'n.e.'],\n abbreviated: ['p.n.e.', 'n.e.'],\n wide: ['przed naszą erą', 'naszej ery']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['I kw.', 'II kw.', 'III kw.', 'IV kw.'],\n wide: ['I kwartał', 'II kwartał', 'III kwartał', 'IV kwartał']\n};\nvar monthValues = {\n narrow: ['S', 'L', 'M', 'K', 'M', 'C', 'L', 'S', 'W', 'P', 'L', 'G'],\n abbreviated: ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'],\n wide: ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień']\n};\nvar monthFormattingValues = {\n narrow: ['s', 'l', 'm', 'k', 'm', 'c', 'l', 's', 'w', 'p', 'l', 'g'],\n abbreviated: ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'],\n wide: ['stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia']\n};\nvar dayValues = {\n narrow: ['N', 'P', 'W', 'Ś', 'C', 'P', 'S'],\n short: ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'],\n abbreviated: ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'],\n wide: ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota']\n};\nvar dayFormattingValues = {\n narrow: ['n', 'p', 'w', 'ś', 'c', 'p', 's'],\n short: ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'],\n abbreviated: ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'],\n wide: ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'półn.',\n noon: 'poł',\n morning: 'rano',\n afternoon: 'popoł.',\n evening: 'wiecz.',\n night: 'noc'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'północ',\n noon: 'południe',\n morning: 'rano',\n afternoon: 'popołudnie',\n evening: 'wieczór',\n night: 'noc'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'północ',\n noon: 'południe',\n morning: 'rano',\n afternoon: 'popołudnie',\n evening: 'wieczór',\n night: 'noc'\n }\n};\nvar dayPeriodFormattingValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'o półn.',\n noon: 'w poł.',\n morning: 'rano',\n afternoon: 'po poł.',\n evening: 'wiecz.',\n night: 'w nocy'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'o północy',\n noon: 'w południe',\n morning: 'rano',\n afternoon: 'po południu',\n evening: 'wieczorem',\n night: 'w nocy'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'o północy',\n noon: 'w południe',\n morning: 'rano',\n afternoon: 'po południu',\n evening: 'wieczorem',\n night: 'w nocy'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n return String(dirtyNumber);\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: monthFormattingValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide',\n formattingValues: dayFormattingValues,\n defaultFormattingWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: dayPeriodFormattingValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(p\\.?\\s*n\\.?\\s*e\\.?\\s*|n\\.?\\s*e\\.?\\s*)/i,\n abbreviated: /^(p\\.?\\s*n\\.?\\s*e\\.?\\s*|n\\.?\\s*e\\.?\\s*)/i,\n wide: /^(przed\\s*nasz(ą|a)\\s*er(ą|a)|naszej\\s*ery)/i\n};\nvar parseEraPatterns = {\n any: [/^p/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^(I|II|III|IV)\\s*kw\\.?/i,\n wide: /^(I|II|III|IV)\\s*kwarta(ł|l)/i\n};\nvar parseQuarterPatterns = {\n narrow: [/1/i, /2/i, /3/i, /4/i],\n any: [/^I kw/i, /^II kw/i, /^III kw/i, /^IV kw/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[slmkcwpg]/i,\n abbreviated: /^(sty|lut|mar|kwi|maj|cze|lip|sie|wrz|pa(ź|z)|lis|gru)/i,\n wide: /^(stycznia|stycze(ń|n)|lutego|luty|marca|marzec|kwietnia|kwiecie(ń|n)|maja|maj|czerwca|czerwiec|lipca|lipiec|sierpnia|sierpie(ń|n)|wrze(ś|s)nia|wrzesie(ń|n)|pa(ź|z)dziernika|pa(ź|z)dziernik|listopada|listopad|grudnia|grudzie(ń|n))/i\n};\nvar parseMonthPatterns = {\n narrow: [/^s/i, /^l/i, /^m/i, /^k/i, /^m/i, /^c/i, /^l/i, /^s/i, /^w/i, /^p/i, /^l/i, /^g/i],\n any: [/^st/i, /^lu/i, /^mar/i, /^k/i, /^maj/i, /^c/i, /^lip/i, /^si/i, /^w/i, /^p/i, /^lis/i, /^g/i]\n};\nvar matchDayPatterns = {\n narrow: /^[npwścs]/i,\n short: /^(nie|pon|wto|(ś|s)ro|czw|pi(ą|a)|sob)/i,\n abbreviated: /^(niedz|pon|wt|(ś|s)r|czw|pt|sob)\\.?/i,\n wide: /^(niedziela|poniedzia(ł|l)ek|wtorek|(ś|s)roda|czwartek|pi(ą|a)tek|sobota)/i\n};\nvar parseDayPatterns = {\n narrow: [/^n/i, /^p/i, /^w/i, /^ś/i, /^c/i, /^p/i, /^s/i],\n abbreviated: [/^n/i, /^po/i, /^w/i, /^(ś|s)r/i, /^c/i, /^pt/i, /^so/i],\n any: [/^n/i, /^po/i, /^w/i, /^(ś|s)r/i, /^c/i, /^pi/i, /^so/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(^a$|^p$|pó(ł|l)n\\.?|o\\s*pó(ł|l)n\\.?|po(ł|l)\\.?|w\\s*po(ł|l)\\.?|po\\s*po(ł|l)\\.?|rano|wiecz\\.?|noc|w\\s*nocy)/i,\n any: /^(am|pm|pó(ł|l)noc|o\\s*pó(ł|l)nocy|po(ł|l)udnie|w\\s*po(ł|l)udnie|popo(ł|l)udnie|po\\s*po(ł|l)udniu|rano|wieczór|wieczorem|noc|w\\s*nocy)/i\n};\nvar parseDayPeriodPatterns = {\n narrow: {\n am: /^a$/i,\n pm: /^p$/i,\n midnight: /pó(ł|l)n/i,\n noon: /po(ł|l)/i,\n morning: /rano/i,\n afternoon: /po\\s*po(ł|l)/i,\n evening: /wiecz/i,\n night: /noc/i\n },\n any: {\n am: /^am/i,\n pm: /^pm/i,\n midnight: /pó(ł|l)n/i,\n noon: /po(ł|l)/i,\n morning: /rano/i,\n afternoon: /po\\s*po(ł|l)/i,\n evening: /wiecz/i,\n night: /noc/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Polish locale.\n * @language Polish\n * @iso-639-2 pol\n * @author Mateusz Derks [@ertrzyiks]{@link https://github.com/ertrzyiks}\n * @author Just RAG [@justrag]{@link https://github.com/justrag}\n * @author Mikolaj Grzyb [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}\n * @author Mateusz Tokarski [@mutisz]{@link https://github.com/mutisz}\n */\n\nvar locale = {\n code: 'pl',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'menos de um segundo',\n other: 'menos de {{count}} segundos'\n },\n xSeconds: {\n one: '1 segundo',\n other: '{{count}} segundos'\n },\n halfAMinute: 'meio minuto',\n lessThanXMinutes: {\n one: 'menos de um minuto',\n other: 'menos de {{count}} minutos'\n },\n xMinutes: {\n one: '1 minuto',\n other: '{{count}} minutos'\n },\n aboutXHours: {\n one: 'aproximadamente 1 hora',\n other: 'aproximadamente {{count}} horas'\n },\n xHours: {\n one: '1 hora',\n other: '{{count}} horas'\n },\n xDays: {\n one: '1 dia',\n other: '{{count}} dias'\n },\n aboutXWeeks: {\n one: 'aproximadamente 1 semana',\n other: 'aproximadamente {{count}} semanas'\n },\n xWeeks: {\n one: '1 semana',\n other: '{{count}} semanas'\n },\n aboutXMonths: {\n one: 'aproximadamente 1 mês',\n other: 'aproximadamente {{count}} meses'\n },\n xMonths: {\n one: '1 mês',\n other: '{{count}} meses'\n },\n aboutXYears: {\n one: 'aproximadamente 1 ano',\n other: 'aproximadamente {{count}} anos'\n },\n xYears: {\n one: '1 ano',\n other: '{{count}} anos'\n },\n overXYears: {\n one: 'mais de 1 ano',\n other: 'mais de {{count}} anos'\n },\n almostXYears: {\n one: 'quase 1 ano',\n other: 'quase {{count}} anos'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'daqui a ' + result;\n } else {\n return 'há ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"EEEE, d 'de' MMMM 'de' y\",\n long: \"d 'de' MMMM 'de' y\",\n medium: \"d 'de' MMM 'de' y\",\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'às' {{time}}\",\n long: \"{{date}} 'às' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: function lastWeek(date) {\n var weekday = date.getUTCDay();\n var last = weekday === 0 || weekday === 6 ? 'último' : 'última';\n return \"'\" + last + \"' eeee 'às' p\";\n },\n yesterday: \"'ontem às' p\",\n today: \"'hoje às' p\",\n tomorrow: \"'amanhã às' p\",\n nextWeek: \"eeee 'às' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, _baseDate, _options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['aC', 'dC'],\n abbreviated: ['a.C.', 'd.C.'],\n wide: ['antes de Cristo', 'depois de Cristo']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['T1', 'T2', 'T3', 'T4'],\n wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n abbreviated: ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'],\n wide: ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro']\n};\nvar dayValues = {\n narrow: ['d', 's', 't', 'q', 'q', 's', 's'],\n short: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],\n abbreviated: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],\n wide: ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'meia-noite',\n noon: 'meio-dia',\n morning: 'manhã',\n afternoon: 'tarde',\n evening: 'noite',\n night: 'madrugada'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'meia-noite',\n noon: 'meio-dia',\n morning: 'manhã',\n afternoon: 'tarde',\n evening: 'noite',\n night: 'madrugada'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'meia-noite',\n noon: 'meio-dia',\n morning: 'manhã',\n afternoon: 'tarde',\n evening: 'noite',\n night: 'madrugada'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'meia-noite',\n noon: 'meio-dia',\n morning: 'da manhã',\n afternoon: 'da tarde',\n evening: 'da noite',\n night: 'da madrugada'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'meia-noite',\n noon: 'meio-dia',\n morning: 'da manhã',\n afternoon: 'da tarde',\n evening: 'da noite',\n night: 'da madrugada'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'meia-noite',\n noon: 'meio-dia',\n morning: 'da manhã',\n afternoon: 'da tarde',\n evening: 'da noite',\n night: 'da madrugada'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'º';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(º|ª)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(ac|dc|a|d)/i,\n abbreviated: /^(a\\.?\\s?c\\.?|a\\.?\\s?e\\.?\\s?c\\.?|d\\.?\\s?c\\.?|e\\.?\\s?c\\.?)/i,\n wide: /^(antes de cristo|antes da era comum|depois de cristo|era comum)/i\n};\nvar parseEraPatterns = {\n any: [/^ac/i, /^dc/i],\n wide: [/^(antes de cristo|antes da era comum)/i, /^(depois de cristo|era comum)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^[1234](º|ª)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,\n wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ab/i, /^mai/i, /^jun/i, /^jul/i, /^ag/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[dstq]/i,\n short: /^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,\n abbreviated: /^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,\n wide: /^(domingo|segunda-?\\s?feira|terça-?\\s?feira|quarta-?\\s?feira|quinta-?\\s?feira|sexta-?\\s?feira|s[áa]bado)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^s/i, /^t/i, /^q/i, /^q/i, /^s/i, /^s/i],\n any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[áa]/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|meia-?\\s?noite|meio-?\\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i,\n any: /^([ap]\\.?\\s?m\\.?|meia-?\\s?noite|meio-?\\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^meia/i,\n noon: /^meio/i,\n morning: /manh[ãa]/i,\n afternoon: /tarde/i,\n evening: /noite/i,\n night: /madrugada/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Portuguese locale.\n * @language Portuguese\n * @iso-639-2 por\n * @author Dário Freire [@dfreire]{@link https://github.com/dfreire}\n * @author Adrián de la Rosa [@adrm]{@link https://github.com/adrm}\n */\n\nvar locale = {\n code: 'pt',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'mai puțin de o secundă',\n other: 'mai puțin de {{count}} secunde'\n },\n xSeconds: {\n one: '1 secundă',\n other: '{{count}} secunde'\n },\n halfAMinute: 'jumătate de minut',\n lessThanXMinutes: {\n one: 'mai puțin de un minut',\n other: 'mai puțin de {{count}} minute'\n },\n xMinutes: {\n one: '1 minut',\n other: '{{count}} minute'\n },\n aboutXHours: {\n one: 'circa 1 oră',\n other: 'circa {{count}} ore'\n },\n xHours: {\n one: '1 oră',\n other: '{{count}} ore'\n },\n xDays: {\n one: '1 zi',\n other: '{{count}} zile'\n },\n aboutXWeeks: {\n one: 'circa o săptămână',\n other: 'circa {{count}} săptămâni'\n },\n xWeeks: {\n one: '1 săptămână',\n other: '{{count}} săptămâni'\n },\n aboutXMonths: {\n one: 'circa 1 lună',\n other: 'circa {{count}} luni'\n },\n xMonths: {\n one: '1 lună',\n other: '{{count}} luni'\n },\n aboutXYears: {\n one: 'circa 1 an',\n other: 'circa {{count}} ani'\n },\n xYears: {\n one: '1 an',\n other: '{{count}} ani'\n },\n overXYears: {\n one: 'peste 1 an',\n other: 'peste {{count}} ani'\n },\n almostXYears: {\n one: 'aproape 1 an',\n other: 'aproape {{count}} ani'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'în ' + result;\n } else {\n return result + ' în urmă';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d MMMM yyyy',\n long: 'd MMMM yyyy',\n medium: 'd MMM yyyy',\n short: 'dd.MM.yyyy'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'la' {{time}}\",\n long: \"{{date}} 'la' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"eeee 'trecută la' p\",\n yesterday: \"'ieri la' p\",\n today: \"'astăzi la' p\",\n tomorrow: \"'mâine la' p\",\n nextWeek: \"eeee 'viitoare la' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['Î', 'D'],\n abbreviated: ['Î.d.C.', 'D.C.'],\n wide: ['Înainte de Cristos', 'După Cristos']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['T1', 'T2', 'T3', 'T4'],\n wide: ['primul trimestru', 'al doilea trimestru', 'al treilea trimestru', 'al patrulea trimestru']\n};\nvar monthValues = {\n narrow: ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['ian', 'feb', 'mar', 'apr', 'mai', 'iun', 'iul', 'aug', 'sep', 'oct', 'noi', 'dec'],\n wide: ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie']\n};\nvar dayValues = {\n narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'],\n short: ['du', 'lu', 'ma', 'mi', 'jo', 'vi', 'sâ'],\n abbreviated: ['dum', 'lun', 'mar', 'mie', 'joi', 'vin', 'sâm'],\n wide: ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mn',\n noon: 'ami',\n morning: 'dim',\n afternoon: 'da',\n evening: 's',\n night: 'n'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'miezul nopții',\n noon: 'amiază',\n morning: 'dimineață',\n afternoon: 'după-amiază',\n evening: 'seară',\n night: 'noapte'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'miezul nopții',\n noon: 'amiază',\n morning: 'dimineață',\n afternoon: 'după-amiază',\n evening: 'seară',\n night: 'noapte'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mn',\n noon: 'amiază',\n morning: 'dimineață',\n afternoon: 'după-amiază',\n evening: 'seară',\n night: 'noapte'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'miezul nopții',\n noon: 'amiază',\n morning: 'dimineață',\n afternoon: 'după-amiază',\n evening: 'seară',\n night: 'noapte'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'miezul nopții',\n noon: 'amiază',\n morning: 'dimineață',\n afternoon: 'după-amiază',\n evening: 'seară',\n night: 'noapte'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n return String(dirtyNumber);\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(Î|D)/i,\n abbreviated: /^(Î\\.?\\s?d\\.?\\s?C\\.?|Î\\.?\\s?e\\.?\\s?n\\.?|D\\.?\\s?C\\.?|e\\.?\\s?n\\.?)/i,\n wide: /^(Înainte de Cristos|Înaintea erei noastre|După Cristos|Era noastră)/i\n};\nvar parseEraPatterns = {\n any: [/^ÎC/i, /^DC/i],\n wide: [/^(Înainte de Cristos|Înaintea erei noastre)/i, /^(După Cristos|Era noastră)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^trimestrul [1234]/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[ifmaasond]/i,\n abbreviated: /^(ian|feb|mar|apr|mai|iun|iul|aug|sep|oct|noi|dec)/i,\n wide: /^(ianuarie|februarie|martie|aprilie|mai|iunie|iulie|august|septembrie|octombrie|noiembrie|decembrie)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^i/i, /^f/i, /^m/i, /^a/i, /^m/i, /^i/i, /^i/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ia/i, /^f/i, /^mar/i, /^ap/i, /^mai/i, /^iun/i, /^iul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[dlmjvs]/i,\n short: /^(d|l|ma|mi|j|v|s)/i,\n abbreviated: /^(dum|lun|mar|mie|jo|vi|sâ)/i,\n wide: /^(duminica|luni|marţi|miercuri|joi|vineri|sâmbătă)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^d/i, /^l/i, /^ma/i, /^mi/i, /^j/i, /^v/i, /^s/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mn|a|(dimineaţa|după-amiaza|seara|noaptea))/i,\n any: /^([ap]\\.?\\s?m\\.?|miezul nopții|amiaza|(dimineaţa|după-amiaza|seara|noaptea))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mn/i,\n noon: /amiaza/i,\n morning: /dimineaţa/i,\n afternoon: /după-amiaza/i,\n evening: /seara/i,\n night: /noaptea/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Romanian locale.\n * @language Romanian\n * @iso-639-2 ron\n * @author Sergiu Munteanu [@jsergiu]{@link https://github.com/jsergiu}\n * @author Adrian Ocneanu [@aocneanu]{@link https://github.com/aocneanu}\n * @author Mihai Ocneanu [@gandesc]{@link https://github.com/gandesc}\n */\n\nvar locale = {\n code: 'ro',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","function declension(scheme, count) {\n // scheme for count=1 exists\n if (scheme.one !== undefined && count === 1) {\n return scheme.one;\n }\n var rem10 = count % 10;\n var rem100 = count % 100; // 1, 21, 31, ...\n\n if (rem10 === 1 && rem100 !== 11) {\n return scheme.singularNominative.replace('{{count}}', String(count)); // 2, 3, 4, 22, 23, 24, 32 ...\n } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) {\n return scheme.singularGenitive.replace('{{count}}', String(count)); // 5, 6, 7, 8, 9, 10, 11, ...\n } else {\n return scheme.pluralGenitive.replace('{{count}}', String(count));\n }\n}\nfunction buildLocalizeTokenFn(scheme) {\n return function (count, options) {\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n if (scheme.future) {\n return declension(scheme.future, count);\n } else {\n return 'через ' + declension(scheme.regular, count);\n }\n } else {\n if (scheme.past) {\n return declension(scheme.past, count);\n } else {\n return declension(scheme.regular, count) + ' назад';\n }\n }\n } else {\n return declension(scheme.regular, count);\n }\n };\n}\nvar formatDistanceLocale = {\n lessThanXSeconds: buildLocalizeTokenFn({\n regular: {\n one: 'меньше секунды',\n singularNominative: 'меньше {{count}} секунды',\n singularGenitive: 'меньше {{count}} секунд',\n pluralGenitive: 'меньше {{count}} секунд'\n },\n future: {\n one: 'меньше, чем через секунду',\n singularNominative: 'меньше, чем через {{count}} секунду',\n singularGenitive: 'меньше, чем через {{count}} секунды',\n pluralGenitive: 'меньше, чем через {{count}} секунд'\n }\n }),\n xSeconds: buildLocalizeTokenFn({\n regular: {\n singularNominative: '{{count}} секунда',\n singularGenitive: '{{count}} секунды',\n pluralGenitive: '{{count}} секунд'\n },\n past: {\n singularNominative: '{{count}} секунду назад',\n singularGenitive: '{{count}} секунды назад',\n pluralGenitive: '{{count}} секунд назад'\n },\n future: {\n singularNominative: 'через {{count}} секунду',\n singularGenitive: 'через {{count}} секунды',\n pluralGenitive: 'через {{count}} секунд'\n }\n }),\n halfAMinute: function halfAMinute(_count, options) {\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'через полминуты';\n } else {\n return 'полминуты назад';\n }\n }\n return 'полминуты';\n },\n lessThanXMinutes: buildLocalizeTokenFn({\n regular: {\n one: 'меньше минуты',\n singularNominative: 'меньше {{count}} минуты',\n singularGenitive: 'меньше {{count}} минут',\n pluralGenitive: 'меньше {{count}} минут'\n },\n future: {\n one: 'меньше, чем через минуту',\n singularNominative: 'меньше, чем через {{count}} минуту',\n singularGenitive: 'меньше, чем через {{count}} минуты',\n pluralGenitive: 'меньше, чем через {{count}} минут'\n }\n }),\n xMinutes: buildLocalizeTokenFn({\n regular: {\n singularNominative: '{{count}} минута',\n singularGenitive: '{{count}} минуты',\n pluralGenitive: '{{count}} минут'\n },\n past: {\n singularNominative: '{{count}} минуту назад',\n singularGenitive: '{{count}} минуты назад',\n pluralGenitive: '{{count}} минут назад'\n },\n future: {\n singularNominative: 'через {{count}} минуту',\n singularGenitive: 'через {{count}} минуты',\n pluralGenitive: 'через {{count}} минут'\n }\n }),\n aboutXHours: buildLocalizeTokenFn({\n regular: {\n singularNominative: 'около {{count}} часа',\n singularGenitive: 'около {{count}} часов',\n pluralGenitive: 'около {{count}} часов'\n },\n future: {\n singularNominative: 'приблизительно через {{count}} час',\n singularGenitive: 'приблизительно через {{count}} часа',\n pluralGenitive: 'приблизительно через {{count}} часов'\n }\n }),\n xHours: buildLocalizeTokenFn({\n regular: {\n singularNominative: '{{count}} час',\n singularGenitive: '{{count}} часа',\n pluralGenitive: '{{count}} часов'\n }\n }),\n xDays: buildLocalizeTokenFn({\n regular: {\n singularNominative: '{{count}} день',\n singularGenitive: '{{count}} дня',\n pluralGenitive: '{{count}} дней'\n }\n }),\n aboutXWeeks: buildLocalizeTokenFn({\n regular: {\n singularNominative: 'около {{count}} недели',\n singularGenitive: 'около {{count}} недель',\n pluralGenitive: 'около {{count}} недель'\n },\n future: {\n singularNominative: 'приблизительно через {{count}} неделю',\n singularGenitive: 'приблизительно через {{count}} недели',\n pluralGenitive: 'приблизительно через {{count}} недель'\n }\n }),\n xWeeks: buildLocalizeTokenFn({\n regular: {\n singularNominative: '{{count}} неделя',\n singularGenitive: '{{count}} недели',\n pluralGenitive: '{{count}} недель'\n }\n }),\n aboutXMonths: buildLocalizeTokenFn({\n regular: {\n singularNominative: 'около {{count}} месяца',\n singularGenitive: 'около {{count}} месяцев',\n pluralGenitive: 'около {{count}} месяцев'\n },\n future: {\n singularNominative: 'приблизительно через {{count}} месяц',\n singularGenitive: 'приблизительно через {{count}} месяца',\n pluralGenitive: 'приблизительно через {{count}} месяцев'\n }\n }),\n xMonths: buildLocalizeTokenFn({\n regular: {\n singularNominative: '{{count}} месяц',\n singularGenitive: '{{count}} месяца',\n pluralGenitive: '{{count}} месяцев'\n }\n }),\n aboutXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: 'около {{count}} года',\n singularGenitive: 'около {{count}} лет',\n pluralGenitive: 'около {{count}} лет'\n },\n future: {\n singularNominative: 'приблизительно через {{count}} год',\n singularGenitive: 'приблизительно через {{count}} года',\n pluralGenitive: 'приблизительно через {{count}} лет'\n }\n }),\n xYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: '{{count}} год',\n singularGenitive: '{{count}} года',\n pluralGenitive: '{{count}} лет'\n }\n }),\n overXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: 'больше {{count}} года',\n singularGenitive: 'больше {{count}} лет',\n pluralGenitive: 'больше {{count}} лет'\n },\n future: {\n singularNominative: 'больше, чем через {{count}} год',\n singularGenitive: 'больше, чем через {{count}} года',\n pluralGenitive: 'больше, чем через {{count}} лет'\n }\n }),\n almostXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: 'почти {{count}} год',\n singularGenitive: 'почти {{count}} года',\n pluralGenitive: 'почти {{count}} лет'\n },\n future: {\n singularNominative: 'почти через {{count}} год',\n singularGenitive: 'почти через {{count}} года',\n pluralGenitive: 'почти через {{count}} лет'\n }\n })\n};\nvar formatDistance = function formatDistance(token, count, options) {\n return formatDistanceLocale[token](count, options);\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"EEEE, d MMMM y 'г.'\",\n long: \"d MMMM y 'г.'\",\n medium: \"d MMM y 'г.'\",\n short: 'dd.MM.y'\n};\nvar timeFormats = {\n full: 'H:mm:ss zzzz',\n long: 'H:mm:ss z',\n medium: 'H:mm:ss',\n short: 'H:mm'\n};\nvar dateTimeFormats = {\n any: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'any'\n })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nvar accusativeWeekdays = ['воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу'];\nfunction _lastWeek(day) {\n var weekday = accusativeWeekdays[day];\n switch (day) {\n case 0:\n return \"'в прошлое \" + weekday + \" в' p\";\n case 1:\n case 2:\n case 4:\n return \"'в прошлый \" + weekday + \" в' p\";\n case 3:\n case 5:\n case 6:\n return \"'в прошлую \" + weekday + \" в' p\";\n }\n}\nfunction thisWeek(day) {\n var weekday = accusativeWeekdays[day];\n if (day === 2\n /* Tue */) {\n return \"'во \" + weekday + \" в' p\";\n } else {\n return \"'в \" + weekday + \" в' p\";\n }\n}\nfunction _nextWeek(day) {\n var weekday = accusativeWeekdays[day];\n switch (day) {\n case 0:\n return \"'в следующее \" + weekday + \" в' p\";\n case 1:\n case 2:\n case 4:\n return \"'в следующий \" + weekday + \" в' p\";\n case 3:\n case 5:\n case 6:\n return \"'в следующую \" + weekday + \" в' p\";\n }\n}\nvar formatRelativeLocale = {\n lastWeek: function lastWeek(date, baseDate, options) {\n var day = date.getUTCDay();\n if (isSameUTCWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return _lastWeek(day);\n }\n },\n yesterday: \"'вчера в' p\",\n today: \"'сегодня в' p\",\n tomorrow: \"'завтра в' p\",\n nextWeek: function nextWeek(date, baseDate, options) {\n var day = date.getUTCDay();\n if (isSameUTCWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return _nextWeek(day);\n }\n },\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date, baseDate, options);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['до н.э.', 'н.э.'],\n abbreviated: ['до н. э.', 'н. э.'],\n wide: ['до нашей эры', 'нашей эры']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1-й кв.', '2-й кв.', '3-й кв.', '4-й кв.'],\n wide: ['1-й квартал', '2-й квартал', '3-й квартал', '4-й квартал']\n};\nvar monthValues = {\n narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],\n abbreviated: ['янв.', 'фев.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'],\n wide: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь']\n};\nvar formattingMonthValues = {\n narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],\n abbreviated: ['янв.', 'фев.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'],\n wide: ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']\n};\nvar dayValues = {\n narrow: ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'],\n short: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],\n abbreviated: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'суб'],\n wide: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'ДП',\n pm: 'ПП',\n midnight: 'полн.',\n noon: 'полд.',\n morning: 'утро',\n afternoon: 'день',\n evening: 'веч.',\n night: 'ночь'\n },\n abbreviated: {\n am: 'ДП',\n pm: 'ПП',\n midnight: 'полн.',\n noon: 'полд.',\n morning: 'утро',\n afternoon: 'день',\n evening: 'веч.',\n night: 'ночь'\n },\n wide: {\n am: 'ДП',\n pm: 'ПП',\n midnight: 'полночь',\n noon: 'полдень',\n morning: 'утро',\n afternoon: 'день',\n evening: 'вечер',\n night: 'ночь'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'ДП',\n pm: 'ПП',\n midnight: 'полн.',\n noon: 'полд.',\n morning: 'утра',\n afternoon: 'дня',\n evening: 'веч.',\n night: 'ночи'\n },\n abbreviated: {\n am: 'ДП',\n pm: 'ПП',\n midnight: 'полн.',\n noon: 'полд.',\n morning: 'утра',\n afternoon: 'дня',\n evening: 'веч.',\n night: 'ночи'\n },\n wide: {\n am: 'ДП',\n pm: 'ПП',\n midnight: 'полночь',\n noon: 'полдень',\n morning: 'утра',\n afternoon: 'дня',\n evening: 'вечера',\n night: 'ночи'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n var unit = options === null || options === void 0 ? void 0 : options.unit;\n var suffix;\n if (unit === 'date') {\n suffix = '-е';\n } else if (unit === 'week' || unit === 'minute' || unit === 'second') {\n suffix = '-я';\n } else {\n suffix = '-й';\n }\n return number + suffix;\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'any',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^((до )?н\\.?\\s?э\\.?)/i,\n abbreviated: /^((до )?н\\.?\\s?э\\.?)/i,\n wide: /^(до нашей эры|нашей эры|наша эра)/i\n};\nvar parseEraPatterns = {\n any: [/^д/i, /^н/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234](-?[ыои]?й?)? кв.?/i,\n wide: /^[1234](-?[ыои]?й?)? квартал/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[яфмаисонд]/i,\n abbreviated: /^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\\.?/i,\n wide: /^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i\n};\nvar parseMonthPatterns = {\n narrow: [/^я/i, /^ф/i, /^м/i, /^а/i, /^м/i, /^и/i, /^и/i, /^а/i, /^с/i, /^о/i, /^н/i, /^я/i],\n any: [/^я/i, /^ф/i, /^мар/i, /^ап/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^ав/i, /^с/i, /^о/i, /^н/i, /^д/i]\n};\nvar matchDayPatterns = {\n narrow: /^[впсч]/i,\n short: /^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\\.?/i,\n abbreviated: /^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,\n wide: /^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i\n};\nvar parseDayPatterns = {\n narrow: [/^в/i, /^п/i, /^в/i, /^с/i, /^ч/i, /^п/i, /^с/i],\n any: [/^в[ос]/i, /^п[он]/i, /^в/i, /^ср/i, /^ч/i, /^п[ят]/i, /^с[уб]/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^([дп]п|полн\\.?|полд\\.?|утр[оа]|день|дня|веч\\.?|ноч[ьи])/i,\n abbreviated: /^([дп]п|полн\\.?|полд\\.?|утр[оа]|день|дня|веч\\.?|ноч[ьи])/i,\n wide: /^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^дп/i,\n pm: /^пп/i,\n midnight: /^полн/i,\n noon: /^полд/i,\n morning: /^у/i,\n afternoon: /^д[ен]/i,\n evening: /^в/i,\n night: /^н/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Russian locale.\n * @language Russian\n * @iso-639-2 rus\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'ru',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","function declensionGroup(scheme, count) {\n if (count === 1 && scheme.one) {\n return scheme.one;\n }\n if (count >= 2 && count <= 4 && scheme.twoFour) {\n return scheme.twoFour;\n } // if count === null || count === 0 || count >= 5\n\n return scheme.other;\n}\nfunction declension(scheme, count, time) {\n var group = declensionGroup(scheme, count);\n var finalText = group[time];\n return finalText.replace('{{count}}', String(count));\n}\nfunction extractPreposition(token) {\n var result = ['lessThan', 'about', 'over', 'almost'].filter(function (preposition) {\n return !!token.match(new RegExp('^' + preposition));\n });\n return result[0];\n}\nfunction prefixPreposition(preposition) {\n var translation = '';\n if (preposition === 'almost') {\n translation = 'takmer';\n }\n if (preposition === 'about') {\n translation = 'približne';\n }\n return translation.length > 0 ? translation + ' ' : '';\n}\nfunction suffixPreposition(preposition) {\n var translation = '';\n if (preposition === 'lessThan') {\n translation = 'menej než';\n }\n if (preposition === 'over') {\n translation = 'viac než';\n }\n return translation.length > 0 ? translation + ' ' : '';\n}\nfunction lowercaseFirstLetter(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\nvar formatDistanceLocale = {\n xSeconds: {\n one: {\n present: 'sekunda',\n past: 'sekundou',\n future: 'sekundu'\n },\n twoFour: {\n present: '{{count}} sekundy',\n past: '{{count}} sekundami',\n future: '{{count}} sekundy'\n },\n other: {\n present: '{{count}} sekúnd',\n past: '{{count}} sekundami',\n future: '{{count}} sekúnd'\n }\n },\n halfAMinute: {\n other: {\n present: 'pol minúty',\n past: 'pol minútou',\n future: 'pol minúty'\n }\n },\n xMinutes: {\n one: {\n present: 'minúta',\n past: 'minútou',\n future: 'minútu'\n },\n twoFour: {\n present: '{{count}} minúty',\n past: '{{count}} minútami',\n future: '{{count}} minúty'\n },\n other: {\n present: '{{count}} minút',\n past: '{{count}} minútami',\n future: '{{count}} minút'\n }\n },\n xHours: {\n one: {\n present: 'hodina',\n past: 'hodinou',\n future: 'hodinu'\n },\n twoFour: {\n present: '{{count}} hodiny',\n past: '{{count}} hodinami',\n future: '{{count}} hodiny'\n },\n other: {\n present: '{{count}} hodín',\n past: '{{count}} hodinami',\n future: '{{count}} hodín'\n }\n },\n xDays: {\n one: {\n present: 'deň',\n past: 'dňom',\n future: 'deň'\n },\n twoFour: {\n present: '{{count}} dni',\n past: '{{count}} dňami',\n future: '{{count}} dni'\n },\n other: {\n present: '{{count}} dní',\n past: '{{count}} dňami',\n future: '{{count}} dní'\n }\n },\n xWeeks: {\n one: {\n present: 'týždeň',\n past: 'týždňom',\n future: 'týždeň'\n },\n twoFour: {\n present: '{{count}} týždne',\n past: '{{count}} týždňami',\n future: '{{count}} týždne'\n },\n other: {\n present: '{{count}} týždňov',\n past: '{{count}} týždňami',\n future: '{{count}} týždňov'\n }\n },\n xMonths: {\n one: {\n present: 'mesiac',\n past: 'mesiacom',\n future: 'mesiac'\n },\n twoFour: {\n present: '{{count}} mesiace',\n past: '{{count}} mesiacmi',\n future: '{{count}} mesiace'\n },\n other: {\n present: '{{count}} mesiacov',\n past: '{{count}} mesiacmi',\n future: '{{count}} mesiacov'\n }\n },\n xYears: {\n one: {\n present: 'rok',\n past: 'rokom',\n future: 'rok'\n },\n twoFour: {\n present: '{{count}} roky',\n past: '{{count}} rokmi',\n future: '{{count}} roky'\n },\n other: {\n present: '{{count}} rokov',\n past: '{{count}} rokmi',\n future: '{{count}} rokov'\n }\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var preposition = extractPreposition(token) || '';\n var key = lowercaseFirstLetter(token.substring(preposition.length));\n var scheme = formatDistanceLocale[key];\n if (!(options !== null && options !== void 0 && options.addSuffix)) {\n return prefixPreposition(preposition) + suffixPreposition(preposition) + declension(scheme, count, 'present');\n }\n if (options.comparison && options.comparison > 0) {\n return prefixPreposition(preposition) + 'o ' + suffixPreposition(preposition) + declension(scheme, count, 'future');\n } else {\n return prefixPreposition(preposition) + 'pred ' + suffixPreposition(preposition) + declension(scheme, count, 'past');\n }\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\"; // https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1986\n\nvar dateFormats = {\n full: 'EEEE d. MMMM y',\n long: 'd. MMMM y',\n medium: 'd. M. y',\n short: 'd. M. y'\n}; // https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#2149\n\nvar timeFormats = {\n full: 'H:mm:ss zzzz',\n long: 'H:mm:ss z',\n medium: 'H:mm:ss',\n short: 'H:mm'\n}; // https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1994\n\nvar dateTimeFormats = {\n full: '{{date}}, {{time}}',\n long: '{{date}}, {{time}}',\n medium: '{{date}}, {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\n// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1308\nvar accusativeWeekdays = ['nedeľu', 'pondelok', 'utorok', 'stredu', 'štvrtok', 'piatok', 'sobotu'];\nfunction _lastWeek(day) {\n var weekday = accusativeWeekdays[day];\n switch (day) {\n case 0:\n /* Sun */\n\n case 3:\n /* Wed */\n\n case 6\n /* Sat */:\n return \"'minulú \" + weekday + \" o' p\";\n default:\n return \"'minulý' eeee 'o' p\";\n }\n}\nfunction thisWeek(day) {\n var weekday = accusativeWeekdays[day];\n if (day === 4\n /* Thu */) {\n return \"'vo' eeee 'o' p\";\n } else {\n return \"'v \" + weekday + \" o' p\";\n }\n}\nfunction _nextWeek(day) {\n var weekday = accusativeWeekdays[day];\n switch (day) {\n case 0:\n /* Sun */\n\n case 4:\n /* Wed */\n\n case 6\n /* Sat */:\n return \"'budúcu \" + weekday + \" o' p\";\n default:\n return \"'budúci' eeee 'o' p\";\n }\n}\nvar formatRelativeLocale = {\n lastWeek: function lastWeek(date, baseDate, options) {\n var day = date.getUTCDay();\n if (isSameUTCWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return _lastWeek(day);\n }\n },\n yesterday: \"'včera o' p\",\n today: \"'dnes o' p\",\n tomorrow: \"'zajtra o' p\",\n nextWeek: function nextWeek(date, baseDate, options) {\n var day = date.getUTCDay();\n if (isSameUTCWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return _nextWeek(day);\n }\n },\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date, baseDate, options);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\"; // https://www.unicode.org/cldr/charts/32/summary/sk.html#1772\n\nvar eraValues = {\n narrow: ['pred Kr.', 'po Kr.'],\n abbreviated: ['pred Kr.', 'po Kr.'],\n wide: ['pred Kristom', 'po Kristovi']\n}; // https://www.unicode.org/cldr/charts/32/summary/sk.html#1780\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. štvrťrok', '2. štvrťrok', '3. štvrťrok', '4. štvrťrok']\n}; // https://www.unicode.org/cldr/charts/32/summary/sk.html#1804\n\nvar monthValues = {\n narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n abbreviated: ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'],\n wide: ['január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', 'november', 'december']\n};\nvar formattingMonthValues = {\n narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n abbreviated: ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'],\n wide: ['januára', 'februára', 'marca', 'apríla', 'mája', 'júna', 'júla', 'augusta', 'septembra', 'októbra', 'novembra', 'decembra']\n}; // https://www.unicode.org/cldr/charts/32/summary/sk.html#1876\n\nvar dayValues = {\n narrow: ['n', 'p', 'u', 's', 'š', 'p', 's'],\n short: ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'],\n abbreviated: ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'],\n wide: ['nedeľa', 'pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota']\n}; // https://www.unicode.org/cldr/charts/32/summary/sk.html#1932\n\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'poln.',\n noon: 'pol.',\n morning: 'ráno',\n afternoon: 'pop.',\n evening: 'več.',\n night: 'noc'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'poln.',\n noon: 'pol.',\n morning: 'ráno',\n afternoon: 'popol.',\n evening: 'večer',\n night: 'noc'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'polnoc',\n noon: 'poludnie',\n morning: 'ráno',\n afternoon: 'popoludnie',\n evening: 'večer',\n night: 'noc'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'o poln.',\n noon: 'nap.',\n morning: 'ráno',\n afternoon: 'pop.',\n evening: 'več.',\n night: 'v n.'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'o poln.',\n noon: 'napol.',\n morning: 'ráno',\n afternoon: 'popol.',\n evening: 'večer',\n night: 'v noci'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'o polnoci',\n noon: 'napoludnie',\n morning: 'ráno',\n afternoon: 'popoludní',\n evening: 'večer',\n night: 'v noci'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(pred Kr\\.|pred n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n abbreviated: /^(pred Kr\\.|pred n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n wide: /^(pred Kristom|pred na[šs][íi]m letopo[čc]tom|po Kristovi|n[áa][šs]ho letopo[čc]tu)/i\n};\nvar parseEraPatterns = {\n any: [/^pr/i, /^(po|n)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234]\\. [šs]tvr[ťt]rok/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|m[áa]j|j[úu]n|j[úu]l|aug|sep|okt|nov|dec)/i,\n wide: /^(janu[áa]ra?|febru[áa]ra?|(marec|marca)|apr[íi]la?|m[áa]ja?|j[úu]na?|j[úu]la?|augusta?|(september|septembra)|(okt[óo]ber|okt[óo]bra)|(november|novembra)|(december|decembra))/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^m[áa]j/i, /^j[úu]n/i, /^j[úu]l/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[npusšp]/i,\n short: /^(ne|po|ut|st|št|pi|so)/i,\n abbreviated: /^(ne|po|ut|st|št|pi|so)/i,\n wide: /^(nede[ľl]a|pondelok|utorok|streda|[šs]tvrtok|piatok|sobota])/i\n};\nvar parseDayPatterns = {\n narrow: [/^n/i, /^p/i, /^u/i, /^s/i, /^š/i, /^p/i, /^s/i],\n any: [/^n/i, /^po/i, /^u/i, /^st/i, /^(št|stv)/i, /^pi/i, /^so/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(am|pm|(o )?poln\\.?|(nap\\.?|pol\\.?)|r[áa]no|pop\\.?|ve[čc]\\.?|(v n\\.?|noc))/i,\n abbreviated: /^(am|pm|(o )?poln\\.?|(napol\\.?|pol\\.?)|r[áa]no|pop\\.?|ve[čc]er|(v )?noci?)/i,\n any: /^(am|pm|(o )?polnoci?|(na)?poludnie|r[áa]no|popoludn(ie|í|i)|ve[čc]er|(v )?noci?)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^am/i,\n pm: /^pm/i,\n midnight: /poln/i,\n noon: /^(nap|(na)?pol(\\.|u))/i,\n morning: /^r[áa]no/i,\n afternoon: /^pop/i,\n evening: /^ve[čc]/i,\n night: /^(noc|v n\\.)/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Slovak locale.\n * @language Slovak\n * @iso-639-2 slk\n * @author Marek Suscak [@mareksuscak]{@link https://github.com/mareksuscak}\n */\n\nvar locale = {\n code: 'sk',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'mindre än en sekund',\n other: 'mindre än {{count}} sekunder'\n },\n xSeconds: {\n one: 'en sekund',\n other: '{{count}} sekunder'\n },\n halfAMinute: 'en halv minut',\n lessThanXMinutes: {\n one: 'mindre än en minut',\n other: 'mindre än {{count}} minuter'\n },\n xMinutes: {\n one: 'en minut',\n other: '{{count}} minuter'\n },\n aboutXHours: {\n one: 'ungefär en timme',\n other: 'ungefär {{count}} timmar'\n },\n xHours: {\n one: 'en timme',\n other: '{{count}} timmar'\n },\n xDays: {\n one: 'en dag',\n other: '{{count}} dagar'\n },\n aboutXWeeks: {\n one: 'ungefär en vecka',\n other: 'ungefär {{count}} vecka'\n },\n xWeeks: {\n one: 'en vecka',\n other: '{{count}} vecka'\n },\n aboutXMonths: {\n one: 'ungefär en månad',\n other: 'ungefär {{count}} månader'\n },\n xMonths: {\n one: 'en månad',\n other: '{{count}} månader'\n },\n aboutXYears: {\n one: 'ungefär ett år',\n other: 'ungefär {{count}} år'\n },\n xYears: {\n one: 'ett år',\n other: '{{count}} år'\n },\n overXYears: {\n one: 'över ett år',\n other: 'över {{count}} år'\n },\n almostXYears: {\n one: 'nästan ett år',\n other: 'nästan {{count}} år'\n }\n};\nvar wordMapping = ['noll', 'en', 'två', 'tre', 'fyra', 'fem', 'sex', 'sju', 'åtta', 'nio', 'tio', 'elva', 'tolv'];\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n if (options && options.onlyNumeric) {\n result = tokenValue.other.replace('{{count}}', String(count));\n } else {\n result = tokenValue.other.replace('{{count}}', count < 13 ? wordMapping[count] : String(count));\n }\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'om ' + result;\n } else {\n return result + ' sedan';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'y-MM-dd'\n};\nvar timeFormats = {\n full: \"'kl'. HH:mm:ss zzzz\",\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'kl.' {{time}}\",\n long: \"{{date}} 'kl.' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'i' EEEE's kl.' p\",\n yesterday: \"'igår kl.' p\",\n today: \"'idag kl.' p\",\n tomorrow: \"'imorgon kl.' p\",\n nextWeek: \"EEEE 'kl.' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['f.Kr.', 'e.Kr.'],\n abbreviated: ['f.Kr.', 'e.Kr.'],\n wide: ['före Kristus', 'efter Kristus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1:a kvartalet', '2:a kvartalet', '3:e kvartalet', '4:e kvartalet']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],\n short: ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'],\n abbreviated: ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'],\n wide: ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag']\n}; // https://www.unicode.org/cldr/charts/32/summary/sv.html#1888\n\nvar dayPeriodValues = {\n narrow: {\n am: 'fm',\n pm: 'em',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'morg.',\n afternoon: 'efterm.',\n evening: 'kväll',\n night: 'natt'\n },\n abbreviated: {\n am: 'f.m.',\n pm: 'e.m.',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'morgon',\n afternoon: 'efterm.',\n evening: 'kväll',\n night: 'natt'\n },\n wide: {\n am: 'förmiddag',\n pm: 'eftermiddag',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'morgon',\n afternoon: 'eftermiddag',\n evening: 'kväll',\n night: 'natt'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'fm',\n pm: 'em',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på efterm.',\n evening: 'på kvällen',\n night: 'på natten'\n },\n abbreviated: {\n am: 'fm',\n pm: 'em',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morg.',\n afternoon: 'på efterm.',\n evening: 'på kvällen',\n night: 'på natten'\n },\n wide: {\n am: 'fm',\n pm: 'em',\n midnight: 'midnatt',\n noon: 'middag',\n morning: 'på morgonen',\n afternoon: 'på eftermiddagen',\n evening: 'på kvällen',\n night: 'på natten'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n case 2:\n return number + ':a';\n }\n }\n return number + ':e';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(:a|:e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(f\\.? ?Kr\\.?|f\\.? ?v\\.? ?t\\.?|e\\.? ?Kr\\.?|v\\.? ?t\\.?)/i,\n abbreviated: /^(f\\.? ?Kr\\.?|f\\.? ?v\\.? ?t\\.?|e\\.? ?Kr\\.?|v\\.? ?t\\.?)/i,\n wide: /^(före Kristus|före vår tid|efter Kristus|vår tid)/i\n};\nvar parseEraPatterns = {\n any: [/^f/i, /^[ev]/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](:a|:e)? kvartalet/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar[s]?|apr|maj|jun[i]?|jul[i]?|aug|sep|okt|nov|dec)\\.?/i,\n wide: /^(januari|februari|mars|april|maj|juni|juli|augusti|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^maj/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtofl]/i,\n short: /^(sö|må|ti|on|to|fr|lö)/i,\n abbreviated: /^(sön|mån|tis|ons|tors|fre|lör)/i,\n wide: /^(söndag|måndag|tisdag|onsdag|torsdag|fredag|lördag)/i\n};\nvar parseDayPatterns = {\n any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^([fe]\\.?\\s?m\\.?|midn(att)?|midd(ag)?|(på) (morgonen|eftermiddagen|kvällen|natten))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^f/i,\n pm: /^e/i,\n midnight: /^midn/i,\n noon: /^midd/i,\n morning: /morgon/i,\n afternoon: /eftermiddag/i,\n evening: /kväll/i,\n night: /natt/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Swedish locale.\n * @language Swedish\n * @iso-639-2 swe\n * @author Johannes Ulén [@ejulen]{@link https://github.com/ejulen}\n * @author Alexander Nanberg [@alexandernanberg]{@link https://github.com/alexandernanberg}\n * @author Henrik Andersson [@limelights]{@link https://github.com/limelights}\n */\n\nvar locale = {\n code: 'sv',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'bir saniyeden az',\n other: '{{count}} saniyeden az'\n },\n xSeconds: {\n one: '1 saniye',\n other: '{{count}} saniye'\n },\n halfAMinute: 'yarım dakika',\n lessThanXMinutes: {\n one: 'bir dakikadan az',\n other: '{{count}} dakikadan az'\n },\n xMinutes: {\n one: '1 dakika',\n other: '{{count}} dakika'\n },\n aboutXHours: {\n one: 'yaklaşık 1 saat',\n other: 'yaklaşık {{count}} saat'\n },\n xHours: {\n one: '1 saat',\n other: '{{count}} saat'\n },\n xDays: {\n one: '1 gün',\n other: '{{count}} gün'\n },\n aboutXWeeks: {\n one: 'yaklaşık 1 hafta',\n other: 'yaklaşık {{count}} hafta'\n },\n xWeeks: {\n one: '1 hafta',\n other: '{{count}} hafta'\n },\n aboutXMonths: {\n one: 'yaklaşık 1 ay',\n other: 'yaklaşık {{count}} ay'\n },\n xMonths: {\n one: '1 ay',\n other: '{{count}} ay'\n },\n aboutXYears: {\n one: 'yaklaşık 1 yıl',\n other: 'yaklaşık {{count}} yıl'\n },\n xYears: {\n one: '1 yıl',\n other: '{{count}} yıl'\n },\n overXYears: {\n one: '1 yıldan fazla',\n other: '{{count}} yıldan fazla'\n },\n almostXYears: {\n one: 'neredeyse 1 yıl',\n other: 'neredeyse {{count}} yıl'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + ' sonra';\n } else {\n return result + ' önce';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'd MMMM y EEEE',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd.MM.yyyy'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'saat' {{time}}\",\n long: \"{{date}} 'saat' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'geçen hafta' eeee 'saat' p\",\n yesterday: \"'dün saat' p\",\n today: \"'bugün saat' p\",\n tomorrow: \"'yarın saat' p\",\n nextWeek: \"eeee 'saat' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['MÖ', 'MS'],\n abbreviated: ['MÖ', 'MS'],\n wide: ['Milattan Önce', 'Milattan Sonra']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1Ç', '2Ç', '3Ç', '4Ç'],\n wide: ['İlk çeyrek', 'İkinci Çeyrek', 'Üçüncü çeyrek', 'Son çeyrek']\n};\nvar monthValues = {\n narrow: ['O', 'Ş', 'M', 'N', 'M', 'H', 'T', 'A', 'E', 'E', 'K', 'A'],\n abbreviated: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],\n wide: ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık']\n};\nvar dayValues = {\n narrow: ['P', 'P', 'S', 'Ç', 'P', 'C', 'C'],\n short: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],\n abbreviated: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cts'],\n wide: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'öö',\n pm: 'ös',\n midnight: 'gy',\n noon: 'ö',\n morning: 'sa',\n afternoon: 'ös',\n evening: 'ak',\n night: 'ge'\n },\n abbreviated: {\n am: 'ÖÖ',\n pm: 'ÖS',\n midnight: 'gece yarısı',\n noon: 'öğle',\n morning: 'sabah',\n afternoon: 'öğleden sonra',\n evening: 'akşam',\n night: 'gece'\n },\n wide: {\n am: 'Ö.Ö.',\n pm: 'Ö.S.',\n midnight: 'gece yarısı',\n noon: 'öğle',\n morning: 'sabah',\n afternoon: 'öğleden sonra',\n evening: 'akşam',\n night: 'gece'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'öö',\n pm: 'ös',\n midnight: 'gy',\n noon: 'ö',\n morning: 'sa',\n afternoon: 'ös',\n evening: 'ak',\n night: 'ge'\n },\n abbreviated: {\n am: 'ÖÖ',\n pm: 'ÖS',\n midnight: 'gece yarısı',\n noon: 'öğlen',\n morning: 'sabahleyin',\n afternoon: 'öğleden sonra',\n evening: 'akşamleyin',\n night: 'geceleyin'\n },\n wide: {\n am: 'ö.ö.',\n pm: 'ö.s.',\n midnight: 'gece yarısı',\n noon: 'öğlen',\n morning: 'sabahleyin',\n afternoon: 'öğleden sonra',\n evening: 'akşamleyin',\n night: 'geceleyin'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(mö|ms)/i,\n abbreviated: /^(mö|ms)/i,\n wide: /^(milattan önce|milattan sonra)/i\n};\nvar parseEraPatterns = {\n any: [/(^mö|^milattan önce)/i, /(^ms|^milattan sonra)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]ç/i,\n wide: /^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n abbreviated: [/1ç/i, /2ç/i, /3ç/i, /4ç/i],\n wide: [/^(i|İ)lk çeyrek/i, /(i|İ)kinci çeyrek/i, /üçüncü çeyrek/i, /son çeyrek/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[oşmnhtaek]/i,\n abbreviated: /^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,\n wide: /^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^o/i, /^ş/i, /^m/i, /^n/i, /^m/i, /^h/i, /^t/i, /^a/i, /^e/i, /^e/i, /^k/i, /^a/i],\n any: [/^o/i, /^ş/i, /^mar/i, /^n/i, /^may/i, /^h/i, /^t/i, /^ağ/i, /^ey/i, /^ek/i, /^k/i, /^ar/i]\n};\nvar matchDayPatterns = {\n narrow: /^[psçc]/i,\n short: /^(pz|pt|sa|ça|pe|cu|ct)/i,\n abbreviated: /^(paz|pzt|sal|çar|per|cum|cts)/i,\n wide: /^(pazar(?!tesi)|pazartesi|salı|çarşamba|perşembe|cuma(?!rtesi)|cumartesi)/i\n};\nvar parseDayPatterns = {\n narrow: [/^p/i, /^p/i, /^s/i, /^ç/i, /^p/i, /^c/i, /^c/i],\n any: [/^pz/i, /^pt/i, /^sa/i, /^ça/i, /^pe/i, /^cu/i, /^ct/i],\n wide: [/^pazar(?!tesi)/i, /^pazartesi/i, /^salı/i, /^çarşamba/i, /^perşembe/i, /^cuma(?!rtesi)/i, /^cumartesi/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(öö|ös|gy|ö|sa|ös|ak|ge)/i,\n any: /^(ö\\.?\\s?[ös]\\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^ö\\.?ö\\.?/i,\n pm: /^ö\\.?s\\.?/i,\n midnight: /^(gy|gece yarısı)/i,\n noon: /^öğ/i,\n morning: /^sa/i,\n afternoon: /^öğleden sonra/i,\n evening: /^ak/i,\n night: /^ge/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Turkish locale.\n * @language Turkish\n * @iso-639-2 tur\n * @author Alpcan Aydın [@alpcanaydin]{@link https://github.com/alpcanaydin}\n * @author Berkay Sargın [@berkaey]{@link https://github.com/berkaey}\n * @author Fatih Bulut [@bulutfatih]{@link https://github.com/bulutfatih}\n * @author Ismail Demirbilek [@dbtek]{@link https://github.com/dbtek}\n * @author İsmail Kayar [@ikayar]{@link https://github.com/ikayar}\n *\n *\n */\n\nvar locale = {\n code: 'tr',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: '不到 1 秒',\n other: '不到 {{count}} 秒'\n },\n xSeconds: {\n one: '1 秒',\n other: '{{count}} 秒'\n },\n halfAMinute: '半分钟',\n lessThanXMinutes: {\n one: '不到 1 分钟',\n other: '不到 {{count}} 分钟'\n },\n xMinutes: {\n one: '1 分钟',\n other: '{{count}} 分钟'\n },\n xHours: {\n one: '1 小时',\n other: '{{count}} 小时'\n },\n aboutXHours: {\n one: '大约 1 小时',\n other: '大约 {{count}} 小时'\n },\n xDays: {\n one: '1 天',\n other: '{{count}} 天'\n },\n aboutXWeeks: {\n one: '大约 1 个星期',\n other: '大约 {{count}} 个星期'\n },\n xWeeks: {\n one: '1 个星期',\n other: '{{count}} 个星期'\n },\n aboutXMonths: {\n one: '大约 1 个月',\n other: '大约 {{count}} 个月'\n },\n xMonths: {\n one: '1 个月',\n other: '{{count}} 个月'\n },\n aboutXYears: {\n one: '大约 1 年',\n other: '大约 {{count}} 年'\n },\n xYears: {\n one: '1 年',\n other: '{{count}} 年'\n },\n overXYears: {\n one: '超过 1 年',\n other: '超过 {{count}} 年'\n },\n almostXYears: {\n one: '将近 1 年',\n other: '将近 {{count}} 年'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + '内';\n } else {\n return result + '前';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"y'年'M'月'd'日' EEEE\",\n long: \"y'年'M'月'd'日'\",\n medium: 'yyyy-MM-dd',\n short: 'yy-MM-dd'\n};\nvar timeFormats = {\n full: 'zzzz a h:mm:ss',\n long: 'z a h:mm:ss',\n medium: 'a h:mm:ss',\n short: 'a h:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nfunction checkWeek(date, baseDate, options) {\n var baseFormat = 'eeee p';\n if (isSameUTCWeek(date, baseDate, options)) {\n return baseFormat; // in same week\n } else if (date.getTime() > baseDate.getTime()) {\n return \"'下个'\" + baseFormat; // in next week\n }\n return \"'上个'\" + baseFormat; // in last week\n}\nvar formatRelativeLocale = {\n lastWeek: checkWeek,\n // days before yesterday, maybe in this week or last week\n yesterday: \"'昨天' p\",\n today: \"'今天' p\",\n tomorrow: \"'明天' p\",\n nextWeek: checkWeek,\n // days after tomorrow, maybe in this week or next week\n other: 'PP p'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date, baseDate, options);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['前', '公元'],\n abbreviated: ['前', '公元'],\n wide: ['公元前', '公元']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['第一季', '第二季', '第三季', '第四季'],\n wide: ['第一季度', '第二季度', '第三季度', '第四季度']\n};\nvar monthValues = {\n narrow: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],\n abbreviated: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n wide: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar dayValues = {\n narrow: ['日', '一', '二', '三', '四', '五', '六'],\n short: ['日', '一', '二', '三', '四', '五', '六'],\n abbreviated: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],\n wide: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']\n};\nvar dayPeriodValues = {\n narrow: {\n am: '上',\n pm: '下',\n midnight: '凌晨',\n noon: '午',\n morning: '早',\n afternoon: '下午',\n evening: '晚',\n night: '夜'\n },\n abbreviated: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜间'\n },\n wide: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜间'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: '上',\n pm: '下',\n midnight: '凌晨',\n noon: '午',\n morning: '早',\n afternoon: '下午',\n evening: '晚',\n night: '夜'\n },\n abbreviated: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜间'\n },\n wide: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜间'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n switch (options === null || options === void 0 ? void 0 : options.unit) {\n case 'date':\n return number.toString() + '日';\n case 'hour':\n return number.toString() + '时';\n case 'minute':\n return number.toString() + '分';\n case 'second':\n return number.toString() + '秒';\n default:\n return '第 ' + number.toString();\n }\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(第\\s*)?\\d+(日|时|分|秒)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(前)/i,\n abbreviated: /^(前)/i,\n wide: /^(公元前|公元)/i\n};\nvar parseEraPatterns = {\n any: [/^(前)/i, /^(公元)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^第[一二三四]刻/i,\n wide: /^第[一二三四]刻钟/i\n};\nvar parseQuarterPatterns = {\n any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i]\n};\nvar matchMonthPatterns = {\n narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,\n abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\\d|1[12])月/i,\n wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i\n};\nvar parseMonthPatterns = {\n narrow: [/^一/i, /^二/i, /^三/i, /^四/i, /^五/i, /^六/i, /^七/i, /^八/i, /^九/i, /^十(?!(一|二))/i, /^十一/i, /^十二/i],\n any: [/^一|1/i, /^二|2/i, /^三|3/i, /^四|4/i, /^五|5/i, /^六|6/i, /^七|7/i, /^八|8/i, /^九|9/i, /^十(?!(一|二))|10/i, /^十一|11/i, /^十二|12/i]\n};\nvar matchDayPatterns = {\n narrow: /^[一二三四五六日]/i,\n short: /^[一二三四五六日]/i,\n abbreviated: /^周[一二三四五六日]/i,\n wide: /^星期[一二三四五六日]/i\n};\nvar parseDayPatterns = {\n any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^上午?/i,\n pm: /^下午?/i,\n midnight: /^午夜/i,\n noon: /^[中正]午/i,\n morning: /^早上/i,\n afternoon: /^下午/i,\n evening: /^晚上?/i,\n night: /^凌晨/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Chinese Simplified locale.\n * @language Chinese Simplified\n * @iso-639-2 zho\n * @author Changyu Geng [@KingMario]{@link https://github.com/KingMario}\n * @author Song Shuoyun [@fnlctrl]{@link https://github.com/fnlctrl}\n * @author sabrinaM [@sabrinamiao]{@link https://github.com/sabrinamiao}\n * @author Carney Wu [@cubicwork]{@link https://github.com/cubicwork}\n * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}\n */\n\nvar locale = {\n code: 'zh-CN',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: '少於 1 秒',\n other: '少於 {{count}} 秒'\n },\n xSeconds: {\n one: '1 秒',\n other: '{{count}} 秒'\n },\n halfAMinute: '半分鐘',\n lessThanXMinutes: {\n one: '少於 1 分鐘',\n other: '少於 {{count}} 分鐘'\n },\n xMinutes: {\n one: '1 分鐘',\n other: '{{count}} 分鐘'\n },\n xHours: {\n one: '1 小時',\n other: '{{count}} 小時'\n },\n aboutXHours: {\n one: '大約 1 小時',\n other: '大約 {{count}} 小時'\n },\n xDays: {\n one: '1 天',\n other: '{{count}} 天'\n },\n aboutXWeeks: {\n one: '大約 1 個星期',\n other: '大約 {{count}} 個星期'\n },\n xWeeks: {\n one: '1 個星期',\n other: '{{count}} 個星期'\n },\n aboutXMonths: {\n one: '大約 1 個月',\n other: '大約 {{count}} 個月'\n },\n xMonths: {\n one: '1 個月',\n other: '{{count}} 個月'\n },\n aboutXYears: {\n one: '大約 1 年',\n other: '大約 {{count}} 年'\n },\n xYears: {\n one: '1 年',\n other: '{{count}} 年'\n },\n overXYears: {\n one: '超過 1 年',\n other: '超過 {{count}} 年'\n },\n almostXYears: {\n one: '將近 1 年',\n other: '將近 {{count}} 年'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + '內';\n } else {\n return result + '前';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"y'年'M'月'd'日' EEEE\",\n long: \"y'年'M'月'd'日'\",\n medium: 'yyyy-MM-dd',\n short: 'yy-MM-dd'\n};\nvar timeFormats = {\n full: 'zzzz a h:mm:ss',\n long: 'z a h:mm:ss',\n medium: 'a h:mm:ss',\n short: 'a h:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'上個'eeee p\",\n yesterday: \"'昨天' p\",\n today: \"'今天' p\",\n tomorrow: \"'明天' p\",\n nextWeek: \"'下個'eeee p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['前', '公元'],\n abbreviated: ['前', '公元'],\n wide: ['公元前', '公元']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['第一季', '第二季', '第三季', '第四季'],\n wide: ['第一季度', '第二季度', '第三季度', '第四季度']\n};\nvar monthValues = {\n narrow: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],\n abbreviated: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n wide: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar dayValues = {\n narrow: ['日', '一', '二', '三', '四', '五', '六'],\n short: ['日', '一', '二', '三', '四', '五', '六'],\n abbreviated: ['週日', '週一', '週二', '週三', '週四', '週五', '週六'],\n wide: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']\n};\nvar dayPeriodValues = {\n narrow: {\n am: '上',\n pm: '下',\n midnight: '午夜',\n noon: '晌',\n morning: '早',\n afternoon: '午',\n evening: '晚',\n night: '夜'\n },\n abbreviated: {\n am: '上午',\n pm: '下午',\n midnight: '午夜',\n noon: '中午',\n morning: '上午',\n afternoon: '下午',\n evening: '晚上',\n night: '夜晚'\n },\n wide: {\n am: '上午',\n pm: '下午',\n midnight: '午夜',\n noon: '中午',\n morning: '上午',\n afternoon: '下午',\n evening: '晚上',\n night: '夜晚'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: '上',\n pm: '下',\n midnight: '午夜',\n noon: '晌',\n morning: '早',\n afternoon: '午',\n evening: '晚',\n night: '夜'\n },\n abbreviated: {\n am: '上午',\n pm: '下午',\n midnight: '午夜',\n noon: '中午',\n morning: '上午',\n afternoon: '下午',\n evening: '晚上',\n night: '夜晚'\n },\n wide: {\n am: '上午',\n pm: '下午',\n midnight: '午夜',\n noon: '中午',\n morning: '上午',\n afternoon: '下午',\n evening: '晚上',\n night: '夜晚'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n switch (options === null || options === void 0 ? void 0 : options.unit) {\n case 'date':\n return number + '日';\n case 'hour':\n return number + '時';\n case 'minute':\n return number + '分';\n case 'second':\n return number + '秒';\n default:\n return '第 ' + number;\n }\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(第\\s*)?\\d+(日|時|分|秒)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(前)/i,\n abbreviated: /^(前)/i,\n wide: /^(公元前|公元)/i\n};\nvar parseEraPatterns = {\n any: [/^(前)/i, /^(公元)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^第[一二三四]季/i,\n wide: /^第[一二三四]季度/i\n};\nvar parseQuarterPatterns = {\n any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i]\n};\nvar matchMonthPatterns = {\n narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,\n abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\\d|1[12])月/i,\n wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i\n};\nvar parseMonthPatterns = {\n narrow: [/^一/i, /^二/i, /^三/i, /^四/i, /^五/i, /^六/i, /^七/i, /^八/i, /^九/i, /^十(?!(一|二))/i, /^十一/i, /^十二/i],\n any: [/^一|1/i, /^二|2/i, /^三|3/i, /^四|4/i, /^五|5/i, /^六|6/i, /^七|7/i, /^八|8/i, /^九|9/i, /^十(?!(一|二))|10/i, /^十一|11/i, /^十二|12/i]\n};\nvar matchDayPatterns = {\n narrow: /^[一二三四五六日]/i,\n short: /^[一二三四五六日]/i,\n abbreviated: /^週[一二三四五六日]/i,\n wide: /^星期[一二三四五六日]/i\n};\nvar parseDayPatterns = {\n any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^上午?/i,\n pm: /^下午?/i,\n midnight: /^午夜/i,\n noon: /^[中正]午/i,\n morning: /^早上/i,\n afternoon: /^下午/i,\n evening: /^晚上?/i,\n night: /^凌晨/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Chinese Traditional locale.\n * @language Chinese Traditional\n * @iso-639-2 zho\n * @author Gary Ip [@gaplo]{@link https://github.com/gaplo}\n */\n\nvar locale = {\n code: 'zh-HK',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */,\n\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: '少於 1 秒',\n other: '少於 {{count}} 秒'\n },\n xSeconds: {\n one: '1 秒',\n other: '{{count}} 秒'\n },\n halfAMinute: '半分鐘',\n lessThanXMinutes: {\n one: '少於 1 分鐘',\n other: '少於 {{count}} 分鐘'\n },\n xMinutes: {\n one: '1 分鐘',\n other: '{{count}} 分鐘'\n },\n xHours: {\n one: '1 小時',\n other: '{{count}} 小時'\n },\n aboutXHours: {\n one: '大約 1 小時',\n other: '大約 {{count}} 小時'\n },\n xDays: {\n one: '1 天',\n other: '{{count}} 天'\n },\n aboutXWeeks: {\n one: '大約 1 個星期',\n other: '大約 {{count}} 個星期'\n },\n xWeeks: {\n one: '1 個星期',\n other: '{{count}} 個星期'\n },\n aboutXMonths: {\n one: '大約 1 個月',\n other: '大約 {{count}} 個月'\n },\n xMonths: {\n one: '1 個月',\n other: '{{count}} 個月'\n },\n aboutXYears: {\n one: '大約 1 年',\n other: '大約 {{count}} 年'\n },\n xYears: {\n one: '1 年',\n other: '{{count}} 年'\n },\n overXYears: {\n one: '超過 1 年',\n other: '超過 {{count}} 年'\n },\n almostXYears: {\n one: '將近 1 年',\n other: '將近 {{count}} 年'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + '內';\n } else {\n return result + '前';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"y'年'M'月'd'日' EEEE\",\n long: \"y'年'M'月'd'日'\",\n medium: 'yyyy-MM-dd',\n short: 'yy-MM-dd'\n};\nvar timeFormats = {\n full: 'zzzz a h:mm:ss',\n long: 'z a h:mm:ss',\n medium: 'a h:mm:ss',\n short: 'a h:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'上個'eeee p\",\n yesterday: \"'昨天' p\",\n today: \"'今天' p\",\n tomorrow: \"'明天' p\",\n nextWeek: \"'下個'eeee p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['前', '公元'],\n abbreviated: ['前', '公元'],\n wide: ['公元前', '公元']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['第一刻', '第二刻', '第三刻', '第四刻'],\n wide: ['第一刻鐘', '第二刻鐘', '第三刻鐘', '第四刻鐘']\n};\nvar monthValues = {\n narrow: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],\n abbreviated: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n wide: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar dayValues = {\n narrow: ['日', '一', '二', '三', '四', '五', '六'],\n short: ['日', '一', '二', '三', '四', '五', '六'],\n abbreviated: ['週日', '週一', '週二', '週三', '週四', '週五', '週六'],\n wide: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']\n};\nvar dayPeriodValues = {\n narrow: {\n am: '上',\n pm: '下',\n midnight: '凌晨',\n noon: '午',\n morning: '早',\n afternoon: '下午',\n evening: '晚',\n night: '夜'\n },\n abbreviated: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜間'\n },\n wide: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜間'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: '上',\n pm: '下',\n midnight: '凌晨',\n noon: '午',\n morning: '早',\n afternoon: '下午',\n evening: '晚',\n night: '夜'\n },\n abbreviated: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜間'\n },\n wide: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜間'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n switch (options === null || options === void 0 ? void 0 : options.unit) {\n case 'date':\n return number + '日';\n case 'hour':\n return number + '時';\n case 'minute':\n return number + '分';\n case 'second':\n return number + '秒';\n default:\n return '第 ' + number;\n }\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(第\\s*)?\\d+(日|時|分|秒)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(前)/i,\n abbreviated: /^(前)/i,\n wide: /^(公元前|公元)/i\n};\nvar parseEraPatterns = {\n any: [/^(前)/i, /^(公元)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^第[一二三四]刻/i,\n wide: /^第[一二三四]刻鐘/i\n};\nvar parseQuarterPatterns = {\n any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i]\n};\nvar matchMonthPatterns = {\n narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,\n abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\\d|1[12])月/i,\n wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i\n};\nvar parseMonthPatterns = {\n narrow: [/^一/i, /^二/i, /^三/i, /^四/i, /^五/i, /^六/i, /^七/i, /^八/i, /^九/i, /^十(?!(一|二))/i, /^十一/i, /^十二/i],\n any: [/^一|1/i, /^二|2/i, /^三|3/i, /^四|4/i, /^五|5/i, /^六|6/i, /^七|7/i, /^八|8/i, /^九|9/i, /^十(?!(一|二))|10/i, /^十一|11/i, /^十二|12/i]\n};\nvar matchDayPatterns = {\n narrow: /^[一二三四五六日]/i,\n short: /^[一二三四五六日]/i,\n abbreviated: /^週[一二三四五六日]/i,\n wide: /^星期[一二三四五六日]/i\n};\nvar parseDayPatterns = {\n any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^上午?/i,\n pm: /^下午?/i,\n midnight: /^午夜/i,\n noon: /^[中正]午/i,\n morning: /^早上/i,\n afternoon: /^下午/i,\n evening: /^晚上?/i,\n night: /^凌晨/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Chinese Traditional locale.\n * @language Chinese Traditional\n * @iso-639-2 zho\n * @author tonypai [@tpai]{@link https://github.com/tpai}\n * @author Jack Hsu [@jackhsu978]{@link https://github.com/jackhsu978}\n * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}\n */\n\nvar locale = {\n code: 'zh-TW',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */,\n\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import { ErrorHandler, LOCALE_ID, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CoreModule } from '@app/core';\nimport { SharedModule } from '@app/shared';\nimport { ArianeTranslationPipe } from '@app/shared/pipes';\nimport { AppStoreModule } from '@app/store/app-store.module';\nimport { environment } from '@env/environment';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { OKTA_CONFIG, OktaAuthModule } from '@okta/okta-angular';\nimport { OktaAuth } from '@okta/okta-auth-js';\nimport { AppRoutingModule, routingComponents } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { LocalizationService } from './core/services/utils/localization/localization.service';\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\nimport {\n zhCN as zh,\n zhHK,\n zhTW,\n cs,\n da,\n nlBE,\n nl,\n enAU,\n enGB,\n enCA,\n enUS,\n et,\n fi,\n fr,\n frCA,\n fr as frBE,\n de,\n el,\n hu,\n it,\n ko,\n lv,\n lt,\n nb,\n pl,\n pt,\n ro,\n ru,\n sk,\n es as esAR,\n es,\n es as esMX,\n sv,\n tr,\n} from 'date-fns/locale';\n\nimport { LoaderModule } from './core/components/loader/loader.module';\nimport { ErrorHandlerService } from './core/services';\n\n/**\n * Change pkce to false for IE in order not to crash the app\n * and display deprecation page\n */\nfunction getOktaConfig() {\n const isIE = navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > -1;\n return {\n ...environment.oktaConfig,\n pkce: !isIE,\n };\n}\n\nconst locales = {\n zh,\n zhHK,\n zhTW,\n cs,\n da,\n nlBE,\n nl,\n enAU,\n enGB,\n enCA,\n enUS,\n et,\n fi,\n fr,\n frCA,\n frBE,\n de,\n el,\n hu,\n it,\n ko,\n lv,\n lt,\n nb,\n pl,\n pt,\n ro,\n ru,\n sk,\n esAR,\n es,\n esMX,\n sv,\n tr,\n};\n\nconst oktaAuth = new OktaAuth(getOktaConfig());\n@NgModule({\n declarations: [AppComponent, ...routingComponents],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n AppRoutingModule,\n CoreModule,\n AppStoreModule,\n StoreDevtoolsModule.instrument({\n maxAge: 25, // Retains last 25 states\n logOnly: environment.production, // Restrict extension to log-only mode\n connectInZone: true,\n }),\n OktaAuthModule,\n SharedModule,\n LoaderModule,\n ],\n providers: [\n /* Pipes */\n ArianeTranslationPipe,\n { provide: OKTA_CONFIG, useValue: { oktaAuth } },\n { provide: LOCALE_ID, useValue: LocalizationService.initLanguage },\n { provide: ErrorHandler, useClass: ErrorHandlerService },\n {\n provide: MAT_DATE_LOCALE,\n useValue:\n locales[LocalizationService.initLanguage.split('-').join('')] ||\n locales[LocalizationService.initLanguage.split('-')[0]] ||\n locales.enGB,\n },\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n","/**\n * @license Angular v17.3.5\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * The character used to mark the start and end of a \"block\" in a `$localize` tagged string.\n * A block can indicate metadata about the message or specify a name of a placeholder for a\n * substitution expressions.\n *\n * For example:\n *\n * ```ts\n * $localize`Hello, ${title}:title:!`;\n * $localize`:meaning|description@@id:source message text`;\n * ```\n */\nconst BLOCK_MARKER$1 = ':';\n/**\n * The marker used to separate a message's \"meaning\" from its \"description\" in a metadata block.\n *\n * For example:\n *\n * ```ts\n * $localize `:correct|Indicates that the user got the answer correct: Right!`;\n * $localize `:movement|Button label for moving to the right: Right!`;\n * ```\n */\nconst MEANING_SEPARATOR = '|';\n/**\n * The marker used to separate a message's custom \"id\" from its \"description\" in a metadata block.\n *\n * For example:\n *\n * ```ts\n * $localize `:A welcome message on the home page@@myApp-homepage-welcome: Welcome!`;\n * ```\n */\nconst ID_SEPARATOR = '@@';\n/**\n * The marker used to separate legacy message ids from the rest of a metadata block.\n *\n * For example:\n *\n * ```ts\n * $localize `:@@custom-id␟2df64767cd895a8fabe3e18b94b5b6b6f9e2e3f0: Welcome!`;\n * ```\n *\n * Note that this character is the \"symbol for the unit separator\" (␟) not the \"unit separator\n * character\" itself, since that has no visual representation. See https://graphemica.com/%E2%90%9F.\n *\n * Here is some background for the original \"unit separator character\":\n * https://stackoverflow.com/questions/8695118/whats-the-file-group-record-unit-separator-control-characters-and-its-usage\n */\nconst LEGACY_ID_INDICATOR = '\\u241F';\n\n/**\n * A lazily created TextEncoder instance for converting strings into UTF-8 bytes\n */\nlet textEncoder;\n/**\n * Return the message id or compute it using the XLIFF1 digest.\n */\nfunction digest(message) {\n return message.id || computeDigest(message);\n}\n/**\n * Compute the message id using the XLIFF1 digest.\n */\nfunction computeDigest(message) {\n return sha1(serializeNodes(message.nodes).join('') + `[${message.meaning}]`);\n}\n/**\n * Return the message id or compute it using the XLIFF2/XMB/$localize digest.\n */\nfunction decimalDigest(message) {\n return message.id || computeDecimalDigest(message);\n}\n/**\n * Compute the message id using the XLIFF2/XMB/$localize digest.\n */\nfunction computeDecimalDigest(message) {\n const visitor = new _SerializerIgnoreIcuExpVisitor();\n const parts = message.nodes.map(a => a.visit(visitor, null));\n return computeMsgId(parts.join(''), message.meaning);\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * The visitor is also used in the i18n parser tests\n *\n * @internal\n */\nclass _SerializerVisitor {\n visitText(text, context) {\n return text.value;\n }\n visitContainer(container, context) {\n return `[${container.children.map(child => child.visit(this)).join(', ')}]`;\n }\n visitIcu(icu, context) {\n const strCases = Object.keys(icu.cases).map(k => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.expression}, ${icu.type}, ${strCases.join(', ')}}`;\n }\n visitTagPlaceholder(ph, context) {\n return ph.isVoid ? `` : `${ph.children.map(child => child.visit(this)).join(', ')}`;\n }\n visitPlaceholder(ph, context) {\n return ph.value ? `${ph.value}` : ``;\n }\n visitIcuPlaceholder(ph, context) {\n return `${ph.value.visit(this)}`;\n }\n visitBlockPlaceholder(ph, context) {\n return `${ph.children.map(child => child.visit(this)).join(', ')}`;\n }\n}\nconst serializerVisitor = /*#__PURE__*/new _SerializerVisitor();\nfunction serializeNodes(nodes) {\n return nodes.map(a => a.visit(serializerVisitor, null));\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * Ignore the ICU expressions so that message IDs stays identical if only the expression changes.\n *\n * @internal\n */\nclass _SerializerIgnoreIcuExpVisitor extends _SerializerVisitor {\n visitIcu(icu, context) {\n let strCases = Object.keys(icu.cases).map(k => `${k} {${icu.cases[k].visit(this)}}`);\n // Do not take the expression into account\n return `{${icu.type}, ${strCases.join(', ')}}`;\n }\n}\n/**\n * Compute the SHA1 of the given string\n *\n * see https://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n *\n * WARNING: this function has not been designed not tested with security in mind.\n * DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT.\n */\nfunction sha1(str) {\n textEncoder ??= new TextEncoder();\n const utf8 = [...textEncoder.encode(str)];\n const words32 = bytesToWords32(utf8, Endian.Big);\n const len = utf8.length * 8;\n const w = new Uint32Array(80);\n let a = 0x67452301,\n b = 0xefcdab89,\n c = 0x98badcfe,\n d = 0x10325476,\n e = 0xc3d2e1f0;\n words32[len >> 5] |= 0x80 << 24 - len % 32;\n words32[(len + 64 >> 9 << 4) + 15] = len;\n for (let i = 0; i < words32.length; i += 16) {\n const h0 = a,\n h1 = b,\n h2 = c,\n h3 = d,\n h4 = e;\n for (let j = 0; j < 80; j++) {\n if (j < 16) {\n w[j] = words32[i + j];\n } else {\n w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n const fkVal = fk(j, b, c, d);\n const f = fkVal[0];\n const k = fkVal[1];\n const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32);\n e = d;\n d = c;\n c = rol32(b, 30);\n b = a;\n a = temp;\n }\n a = add32(a, h0);\n b = add32(b, h1);\n c = add32(c, h2);\n d = add32(d, h3);\n e = add32(e, h4);\n }\n // Convert the output parts to a 160-bit hexadecimal string\n return toHexU32(a) + toHexU32(b) + toHexU32(c) + toHexU32(d) + toHexU32(e);\n}\n/**\n * Convert and format a number as a string representing a 32-bit unsigned hexadecimal number.\n * @param value The value to format as a string.\n * @returns A hexadecimal string representing the value.\n */\nfunction toHexU32(value) {\n // unsigned right shift of zero ensures an unsigned 32-bit number\n return (value >>> 0).toString(16).padStart(8, '0');\n}\nfunction fk(index, b, c, d) {\n if (index < 20) {\n return [b & c | ~b & d, 0x5a827999];\n }\n if (index < 40) {\n return [b ^ c ^ d, 0x6ed9eba1];\n }\n if (index < 60) {\n return [b & c | b & d | c & d, 0x8f1bbcdc];\n }\n return [b ^ c ^ d, 0xca62c1d6];\n}\n/**\n * Compute the fingerprint of the given string\n *\n * The output is 64 bit number encoded as a decimal string\n *\n * based on:\n * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java\n */\nfunction fingerprint(str) {\n textEncoder ??= new TextEncoder();\n const utf8 = textEncoder.encode(str);\n const view = new DataView(utf8.buffer, utf8.byteOffset, utf8.byteLength);\n let hi = hash32(view, utf8.length, 0);\n let lo = hash32(view, utf8.length, 102072);\n if (hi == 0 && (lo == 0 || lo == 1)) {\n hi = hi ^ 0x130f9bef;\n lo = lo ^ -0x6b5f56d8;\n }\n return BigInt.asUintN(32, BigInt(hi)) << BigInt(32) | BigInt.asUintN(32, BigInt(lo));\n}\nfunction computeMsgId(msg, meaning = '') {\n let msgFingerprint = fingerprint(msg);\n if (meaning) {\n // Rotate the 64-bit message fingerprint one bit to the left and then add the meaning\n // fingerprint.\n msgFingerprint = BigInt.asUintN(64, msgFingerprint << BigInt(1)) | msgFingerprint >> BigInt(63) & BigInt(1);\n msgFingerprint += fingerprint(meaning);\n }\n return BigInt.asUintN(63, msgFingerprint).toString();\n}\nfunction hash32(view, length, c) {\n let a = 0x9e3779b9,\n b = 0x9e3779b9;\n let index = 0;\n const end = length - 12;\n for (; index <= end; index += 12) {\n a += view.getUint32(index, true);\n b += view.getUint32(index + 4, true);\n c += view.getUint32(index + 8, true);\n const res = mix(a, b, c);\n a = res[0], b = res[1], c = res[2];\n }\n const remainder = length - index;\n // the first byte of c is reserved for the length\n c += length;\n if (remainder >= 4) {\n a += view.getUint32(index, true);\n index += 4;\n if (remainder >= 8) {\n b += view.getUint32(index, true);\n index += 4;\n // Partial 32-bit word for c\n if (remainder >= 9) {\n c += view.getUint8(index++) << 8;\n }\n if (remainder >= 10) {\n c += view.getUint8(index++) << 16;\n }\n if (remainder === 11) {\n c += view.getUint8(index++) << 24;\n }\n } else {\n // Partial 32-bit word for b\n if (remainder >= 5) {\n b += view.getUint8(index++);\n }\n if (remainder >= 6) {\n b += view.getUint8(index++) << 8;\n }\n if (remainder === 7) {\n b += view.getUint8(index++) << 16;\n }\n }\n } else {\n // Partial 32-bit word for a\n if (remainder >= 1) {\n a += view.getUint8(index++);\n }\n if (remainder >= 2) {\n a += view.getUint8(index++) << 8;\n }\n if (remainder === 3) {\n a += view.getUint8(index++) << 16;\n }\n }\n return mix(a, b, c)[2];\n}\n// clang-format off\nfunction mix(a, b, c) {\n a -= b;\n a -= c;\n a ^= c >>> 13;\n b -= c;\n b -= a;\n b ^= a << 8;\n c -= a;\n c -= b;\n c ^= b >>> 13;\n a -= b;\n a -= c;\n a ^= c >>> 12;\n b -= c;\n b -= a;\n b ^= a << 16;\n c -= a;\n c -= b;\n c ^= b >>> 5;\n a -= b;\n a -= c;\n a ^= c >>> 3;\n b -= c;\n b -= a;\n b ^= a << 10;\n c -= a;\n c -= b;\n c ^= b >>> 15;\n return [a, b, c];\n}\n// clang-format on\n// Utils\nvar Endian = /*#__PURE__*/function (Endian) {\n Endian[Endian[\"Little\"] = 0] = \"Little\";\n Endian[Endian[\"Big\"] = 1] = \"Big\";\n return Endian;\n}(Endian || {});\nfunction add32(a, b) {\n return add32to64(a, b)[1];\n}\nfunction add32to64(a, b) {\n const low = (a & 0xffff) + (b & 0xffff);\n const high = (a >>> 16) + (b >>> 16) + (low >>> 16);\n return [high >>> 16, high << 16 | low & 0xffff];\n}\n// Rotate a 32b number left `count` position\nfunction rol32(a, count) {\n return a << count | a >>> 32 - count;\n}\nfunction bytesToWords32(bytes, endian) {\n const size = bytes.length + 3 >>> 2;\n const words32 = [];\n for (let i = 0; i < size; i++) {\n words32[i] = wordAt(bytes, i * 4, endian);\n }\n return words32;\n}\nfunction byteAt(bytes, index) {\n return index >= bytes.length ? 0 : bytes[index];\n}\nfunction wordAt(bytes, index, endian) {\n let word = 0;\n if (endian === Endian.Big) {\n for (let i = 0; i < 4; i++) {\n word += byteAt(bytes, index + i) << 24 - 8 * i;\n }\n } else {\n for (let i = 0; i < 4; i++) {\n word += byteAt(bytes, index + i) << 8 * i;\n }\n }\n return word;\n}\n\n// This module specifier is intentionally a relative path to allow bundling the code directly\n/**\n * Parse a `$localize` tagged string into a structure that can be used for translation or\n * extraction.\n *\n * See `ParsedMessage` for an example.\n */\nfunction parseMessage(messageParts, expressions, location, messagePartLocations, expressionLocations = []) {\n const substitutions = {};\n const substitutionLocations = {};\n const associatedMessageIds = {};\n const metadata = parseMetadata(messageParts[0], messageParts.raw[0]);\n const cleanedMessageParts = [metadata.text];\n const placeholderNames = [];\n let messageString = metadata.text;\n for (let i = 1; i < messageParts.length; i++) {\n const {\n messagePart,\n placeholderName = computePlaceholderName(i),\n associatedMessageId\n } = parsePlaceholder(messageParts[i], messageParts.raw[i]);\n messageString += `{$${placeholderName}}${messagePart}`;\n if (expressions !== undefined) {\n substitutions[placeholderName] = expressions[i - 1];\n substitutionLocations[placeholderName] = expressionLocations[i - 1];\n }\n placeholderNames.push(placeholderName);\n if (associatedMessageId !== undefined) {\n associatedMessageIds[placeholderName] = associatedMessageId;\n }\n cleanedMessageParts.push(messagePart);\n }\n const messageId = metadata.customId || computeMsgId(messageString, metadata.meaning || '');\n const legacyIds = metadata.legacyIds ? metadata.legacyIds.filter(id => id !== messageId) : [];\n return {\n id: messageId,\n legacyIds,\n substitutions,\n substitutionLocations,\n text: messageString,\n customId: metadata.customId,\n meaning: metadata.meaning || '',\n description: metadata.description || '',\n messageParts: cleanedMessageParts,\n messagePartLocations,\n placeholderNames,\n associatedMessageIds,\n location\n };\n}\n/**\n * Parse the given message part (`cooked` + `raw`) to extract the message metadata from the text.\n *\n * If the message part has a metadata block this function will extract the `meaning`,\n * `description`, `customId` and `legacyId` (if provided) from the block. These metadata properties\n * are serialized in the string delimited by `|`, `@@` and `␟` respectively.\n *\n * (Note that `␟` is the `LEGACY_ID_INDICATOR` - see `constants.ts`.)\n *\n * For example:\n *\n * ```ts\n * `:meaning|description@@custom-id:`\n * `:meaning|@@custom-id:`\n * `:meaning|description:`\n * `:description@@custom-id:`\n * `:meaning|:`\n * `:description:`\n * `:@@custom-id:`\n * `:meaning|description@@custom-id␟legacy-id-1␟legacy-id-2:`\n * ```\n *\n * @param cooked The cooked version of the message part to parse.\n * @param raw The raw version of the message part to parse.\n * @returns A object containing any metadata that was parsed from the message part.\n */\nfunction parseMetadata(cooked, raw) {\n const {\n text: messageString,\n block\n } = splitBlock(cooked, raw);\n if (block === undefined) {\n return {\n text: messageString\n };\n } else {\n const [meaningDescAndId, ...legacyIds] = block.split(LEGACY_ID_INDICATOR);\n const [meaningAndDesc, customId] = meaningDescAndId.split(ID_SEPARATOR, 2);\n let [meaning, description] = meaningAndDesc.split(MEANING_SEPARATOR, 2);\n if (description === undefined) {\n description = meaning;\n meaning = undefined;\n }\n if (description === '') {\n description = undefined;\n }\n return {\n text: messageString,\n meaning,\n description,\n customId,\n legacyIds\n };\n }\n}\n/**\n * Parse the given message part (`cooked` + `raw`) to extract any placeholder metadata from the\n * text.\n *\n * If the message part has a metadata block this function will extract the `placeholderName` and\n * `associatedMessageId` (if provided) from the block.\n *\n * These metadata properties are serialized in the string delimited by `@@`.\n *\n * For example:\n *\n * ```ts\n * `:placeholder-name@@associated-id:`\n * ```\n *\n * @param cooked The cooked version of the message part to parse.\n * @param raw The raw version of the message part to parse.\n * @returns A object containing the metadata (`placeholderName` and `associatedMessageId`) of the\n * preceding placeholder, along with the static text that follows.\n */\nfunction parsePlaceholder(cooked, raw) {\n const {\n text: messagePart,\n block\n } = splitBlock(cooked, raw);\n if (block === undefined) {\n return {\n messagePart\n };\n } else {\n const [placeholderName, associatedMessageId] = block.split(ID_SEPARATOR);\n return {\n messagePart,\n placeholderName,\n associatedMessageId\n };\n }\n}\n/**\n * Split a message part (`cooked` + `raw`) into an optional delimited \"block\" off the front and the\n * rest of the text of the message part.\n *\n * Blocks appear at the start of message parts. They are delimited by a colon `:` character at the\n * start and end of the block.\n *\n * If the block is in the first message part then it will be metadata about the whole message:\n * meaning, description, id. Otherwise it will be metadata about the immediately preceding\n * substitution: placeholder name.\n *\n * Since blocks are optional, it is possible that the content of a message block actually starts\n * with a block marker. In this case the marker must be escaped `\\:`.\n *\n * @param cooked The cooked version of the message part to parse.\n * @param raw The raw version of the message part to parse.\n * @returns An object containing the `text` of the message part and the text of the `block`, if it\n * exists.\n * @throws an error if the `block` is unterminated\n */\nfunction splitBlock(cooked, raw) {\n if (raw.charAt(0) !== BLOCK_MARKER$1) {\n return {\n text: cooked\n };\n } else {\n const endOfBlock = findEndOfBlock(cooked, raw);\n return {\n block: cooked.substring(1, endOfBlock),\n text: cooked.substring(endOfBlock + 1)\n };\n }\n}\nfunction computePlaceholderName(index) {\n return index === 1 ? 'PH' : `PH_${index - 1}`;\n}\n/**\n * Find the end of a \"marked block\" indicated by the first non-escaped colon.\n *\n * @param cooked The cooked string (where escaped chars have been processed)\n * @param raw The raw string (where escape sequences are still in place)\n *\n * @returns the index of the end of block marker\n * @throws an error if the block is unterminated\n */\nfunction findEndOfBlock(cooked, raw) {\n for (let cookedIndex = 1, rawIndex = 1; cookedIndex < cooked.length; cookedIndex++, rawIndex++) {\n if (raw[rawIndex] === '\\\\') {\n rawIndex++;\n } else if (cooked[cookedIndex] === BLOCK_MARKER$1) {\n return cookedIndex;\n }\n }\n throw new Error(`Unterminated $localize metadata block in \"${raw}\".`);\n}\nclass MissingTranslationError extends Error {\n constructor(parsedMessage) {\n super(`No translation found for ${describeMessage(parsedMessage)}.`);\n this.parsedMessage = parsedMessage;\n this.type = 'MissingTranslationError';\n }\n}\nfunction isMissingTranslationError(e) {\n return e.type === 'MissingTranslationError';\n}\n/**\n * Translate the text of the `$localize` tagged-string (i.e. `messageParts` and\n * `substitutions`) using the given `translations`.\n *\n * The tagged-string is parsed to extract its `messageId` which is used to find an appropriate\n * `ParsedTranslation`. If this doesn't match and there are legacy ids then try matching a\n * translation using those.\n *\n * If one is found then it is used to translate the message into a new set of `messageParts` and\n * `substitutions`.\n * The translation may reorder (or remove) substitutions as appropriate.\n *\n * If there is no translation with a matching message id then an error is thrown.\n * If a translation contains a placeholder that is not found in the message being translated then an\n * error is thrown.\n */\nfunction translate$1(translations, messageParts, substitutions) {\n const message = parseMessage(messageParts, substitutions);\n // Look up the translation using the messageId, and then the legacyId if available.\n let translation = translations[message.id];\n // If the messageId did not match a translation, try matching the legacy ids instead\n if (message.legacyIds !== undefined) {\n for (let i = 0; i < message.legacyIds.length && translation === undefined; i++) {\n translation = translations[message.legacyIds[i]];\n }\n }\n if (translation === undefined) {\n throw new MissingTranslationError(message);\n }\n return [translation.messageParts, translation.placeholderNames.map(placeholder => {\n if (message.substitutions.hasOwnProperty(placeholder)) {\n return message.substitutions[placeholder];\n } else {\n throw new Error(`There is a placeholder name mismatch with the translation provided for the message ${describeMessage(message)}.\\n` + `The translation contains a placeholder with name ${placeholder}, which does not exist in the message.`);\n }\n })];\n}\n/**\n * Parse the `messageParts` and `placeholderNames` out of a target `message`.\n *\n * Used by `loadTranslations()` to convert target message strings into a structure that is more\n * appropriate for doing translation.\n *\n * @param message the message to be parsed.\n */\nfunction parseTranslation(messageString) {\n const parts = messageString.split(/{\\$([^}]*)}/);\n const messageParts = [parts[0]];\n const placeholderNames = [];\n for (let i = 1; i < parts.length - 1; i += 2) {\n placeholderNames.push(parts[i]);\n messageParts.push(`${parts[i + 1]}`);\n }\n const rawMessageParts = messageParts.map(part => part.charAt(0) === BLOCK_MARKER$1 ? '\\\\' + part : part);\n return {\n text: messageString,\n messageParts: makeTemplateObject(messageParts, rawMessageParts),\n placeholderNames\n };\n}\n/**\n * Create a `ParsedTranslation` from a set of `messageParts` and `placeholderNames`.\n *\n * @param messageParts The message parts to appear in the ParsedTranslation.\n * @param placeholderNames The names of the placeholders to intersperse between the `messageParts`.\n */\nfunction makeParsedTranslation(messageParts, placeholderNames = []) {\n let messageString = messageParts[0];\n for (let i = 0; i < placeholderNames.length; i++) {\n messageString += `{$${placeholderNames[i]}}${messageParts[i + 1]}`;\n }\n return {\n text: messageString,\n messageParts: makeTemplateObject(messageParts, messageParts),\n placeholderNames\n };\n}\n/**\n * Create the specialized array that is passed to tagged-string tag functions.\n *\n * @param cooked The message parts with their escape codes processed.\n * @param raw The message parts with their escaped codes as-is.\n */\nfunction makeTemplateObject(cooked, raw) {\n Object.defineProperty(cooked, 'raw', {\n value: raw\n });\n return cooked;\n}\nfunction describeMessage(message) {\n const meaningString = message.meaning && ` - \"${message.meaning}\"`;\n const legacy = message.legacyIds && message.legacyIds.length > 0 ? ` [${message.legacyIds.map(l => `\"${l}\"`).join(', ')}]` : '';\n return `\"${message.id}\"${legacy} (\"${message.text}\"${meaningString})`;\n}\n\n/**\n * Load translations for use by `$localize`, if doing runtime translation.\n *\n * If the `$localize` tagged strings are not going to be replaced at compiled time, it is possible\n * to load a set of translations that will be applied to the `$localize` tagged strings at runtime,\n * in the browser.\n *\n * Loading a new translation will overwrite a previous translation if it has the same `MessageId`.\n *\n * Note that `$localize` messages are only processed once, when the tagged string is first\n * encountered, and does not provide dynamic language changing without refreshing the browser.\n * Loading new translations later in the application life-cycle will not change the translated text\n * of messages that have already been translated.\n *\n * The message IDs and translations are in the same format as that rendered to \"simple JSON\"\n * translation files when extracting messages. In particular, placeholders in messages are rendered\n * using the `{$PLACEHOLDER_NAME}` syntax. For example the message from the following template:\n *\n * ```html\n *
preinner-preboldinner-postpost
\n * ```\n *\n * would have the following form in the `translations` map:\n *\n * ```ts\n * {\n * \"2932901491976224757\":\n * \"pre{$START_TAG_SPAN}inner-pre{$START_BOLD_TEXT}bold{$CLOSE_BOLD_TEXT}inner-post{$CLOSE_TAG_SPAN}post\"\n * }\n * ```\n *\n * @param translations A map from message ID to translated message.\n *\n * These messages are processed and added to a lookup based on their `MessageId`.\n *\n * @see {@link clearTranslations} for removing translations loaded using this function.\n * @see {@link $localize} for tagging messages as needing to be translated.\n * @publicApi\n */\nfunction loadTranslations(translations) {\n // Ensure the translate function exists\n if (!$localize.translate) {\n $localize.translate = translate;\n }\n if (!$localize.TRANSLATIONS) {\n $localize.TRANSLATIONS = {};\n }\n Object.keys(translations).forEach(key => {\n $localize.TRANSLATIONS[key] = parseTranslation(translations[key]);\n });\n}\n/**\n * Remove all translations for `$localize`, if doing runtime translation.\n *\n * All translations that had been loading into memory using `loadTranslations()` will be removed.\n *\n * @see {@link loadTranslations} for loading translations at runtime.\n * @see {@link $localize} for tagging messages as needing to be translated.\n *\n * @publicApi\n */\nfunction clearTranslations() {\n $localize.translate = undefined;\n $localize.TRANSLATIONS = {};\n}\n/**\n * Translate the text of the given message, using the loaded translations.\n *\n * This function may reorder (or remove) substitutions as indicated in the matching translation.\n */\nfunction translate(messageParts, substitutions) {\n try {\n return translate$1($localize.TRANSLATIONS, messageParts, substitutions);\n } catch (e) {\n console.warn(e.message);\n return [messageParts, substitutions];\n }\n}\n\n/**\n * Tag a template literal string for localization.\n *\n * For example:\n *\n * ```ts\n * $localize `some string to localize`\n * ```\n *\n * **Providing meaning, description and id**\n *\n * You can optionally specify one or more of `meaning`, `description` and `id` for a localized\n * string by pre-pending it with a colon delimited block of the form:\n *\n * ```ts\n * $localize`:meaning|description@@id:source message text`;\n *\n * $localize`:meaning|:source message text`;\n * $localize`:description:source message text`;\n * $localize`:@@id:source message text`;\n * ```\n *\n * This format is the same as that used for `i18n` markers in Angular templates. See the\n * [Angular i18n guide](guide/i18n-common-prepare#mark-text-in-component-template).\n *\n * **Naming placeholders**\n *\n * If the template literal string contains expressions, then the expressions will be automatically\n * associated with placeholder names for you.\n *\n * For example:\n *\n * ```ts\n * $localize `Hi ${name}! There are ${items.length} items.`;\n * ```\n *\n * will generate a message-source of `Hi {$PH}! There are {$PH_1} items`.\n *\n * The recommended practice is to name the placeholder associated with each expression though.\n *\n * Do this by providing the placeholder name wrapped in `:` characters directly after the\n * expression. These placeholder names are stripped out of the rendered localized string.\n *\n * For example, to name the `items.length` expression placeholder `itemCount` you write:\n *\n * ```ts\n * $localize `There are ${items.length}:itemCount: items`;\n * ```\n *\n * **Escaping colon markers**\n *\n * If you need to use a `:` character directly at the start of a tagged string that has no\n * metadata block, or directly after a substitution expression that has no name you must escape\n * the `:` by preceding it with a backslash:\n *\n * For example:\n *\n * ```ts\n * // message has a metadata block so no need to escape colon\n * $localize `:some description::this message starts with a colon (:)`;\n * // no metadata block so the colon must be escaped\n * $localize `\\:this message starts with a colon (:)`;\n * ```\n *\n * ```ts\n * // named substitution so no need to escape colon\n * $localize `${label}:label:: ${}`\n * // anonymous substitution so colon must be escaped\n * $localize `${label}\\: ${}`\n * ```\n *\n * **Processing localized strings:**\n *\n * There are three scenarios:\n *\n * * **compile-time inlining**: the `$localize` tag is transformed at compile time by a\n * transpiler, removing the tag and replacing the template literal string with a translated\n * literal string from a collection of translations provided to the transpilation tool.\n *\n * * **run-time evaluation**: the `$localize` tag is a run-time function that replaces and\n * reorders the parts (static strings and expressions) of the template literal string with strings\n * from a collection of translations loaded at run-time.\n *\n * * **pass-through evaluation**: the `$localize` tag is a run-time function that simply evaluates\n * the original template literal string without applying any translations to the parts. This\n * version is used during development or where there is no need to translate the localized\n * template literals.\n *\n * @param messageParts a collection of the static parts of the template string.\n * @param expressions a collection of the values of each placeholder in the template string.\n * @returns the translated string, with the `messageParts` and `expressions` interleaved together.\n *\n * @globalApi\n * @publicApi\n */\nconst $localize$1 = function (messageParts, ...expressions) {\n if ($localize$1.translate) {\n // Don't use array expansion here to avoid the compiler adding `__read()` helper unnecessarily.\n const translation = $localize$1.translate(messageParts, expressions);\n messageParts = translation[0];\n expressions = translation[1];\n }\n let message = stripBlock(messageParts[0], messageParts.raw[0]);\n for (let i = 1; i < messageParts.length; i++) {\n message += expressions[i - 1] + stripBlock(messageParts[i], messageParts.raw[i]);\n }\n return message;\n};\nconst BLOCK_MARKER = ':';\n/**\n * Strip a delimited \"block\" from the start of the `messagePart`, if it is found.\n *\n * If a marker character (:) actually appears in the content at the start of a tagged string or\n * after a substitution expression, where a block has not been provided the character must be\n * escaped with a backslash, `\\:`. This function checks for this by looking at the `raw`\n * messagePart, which should still contain the backslash.\n *\n * @param messagePart The cooked message part to process.\n * @param rawMessagePart The raw message part to check.\n * @returns the message part with the placeholder name stripped, if found.\n * @throws an error if the block is unterminated\n */\nfunction stripBlock(messagePart, rawMessagePart) {\n return rawMessagePart.charAt(0) === BLOCK_MARKER ? messagePart.substring(findEndOfBlock(messagePart, rawMessagePart) + 1) : messagePart;\n}\n\n// This file exports all the `utils` as private exports so that other parts of `@angular/localize`\n\n// This file contains the public API of the `@angular/localize` entry-point\n\n// DO NOT ADD public exports to this file.\n\nexport { clearTranslations, loadTranslations, $localize$1 as ɵ$localize, MissingTranslationError as ɵMissingTranslationError, computeMsgId as ɵcomputeMsgId, findEndOfBlock as ɵfindEndOfBlock, isMissingTranslationError as ɵisMissingTranslationError, makeParsedTranslation as ɵmakeParsedTranslation, makeTemplateObject as ɵmakeTemplateObject, parseMessage as ɵparseMessage, parseMetadata as ɵparseMetadata, parseTranslation as ɵparseTranslation, splitBlock as ɵsplitBlock, translate$1 as ɵtranslate };\n","import { AVAILABLE_LANGUAGES } from '@app/core/services/utils/localization/localization';\nimport { LocalizationService } from '@app/core/services/utils/localization/localization.service';\n\n/**\n * Credentials\n */\nconst phraseAccessToken = '436b4093e476cc95bcdf0cb09c1b174e6328f6515e6ff7f42dc043ddfd79b8a9';\nconst phraseProjectId = '4d8906558ee909282c6da4f59dd78f4e';\n/**\n * Define init language\n */\nconst defineInitLanguage = () => {\n const language = LocalizationService.completeLanguageCode(LocalizationService.initLanguage || navigator.language);\n LocalizationService.initLanguage = language;\n return language;\n};\n/**\n * Generate translations\n * Parse to JSON\n * Clean nullish values\n * Copy key as value for demo env\n */\nconst generateTranslations = (textTranslations: string) => {\n let translations = JSON.parse(textTranslations);\n for (const [key, value] of Object.entries(translations)) {\n if (!value) {\n translations[key] = '';\n }\n }\n if (LocalizationService.isPhraseSdkEnabled) {\n const demoTranslations: Record = {};\n for (const key of Object.keys(translations)) {\n demoTranslations[key] = `[[__phrase_${key}__]]`;\n }\n translations = demoTranslations;\n }\n return translations;\n};\n/**\n * Load locale from Phrase\n */\nconst loadLocale = (localeId: string): Promise> => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const handleError = (message: string) => () => {\n reject(new Error(message));\n };\n\n xhr.onload = () => {\n try {\n const translations = generateTranslations(xhr.responseText);\n resolve(translations);\n } catch (e) {\n reject(e);\n }\n };\n xhr.onerror = handleError('Phraseapp request failed');\n xhr.ontimeout = handleError('Phraseapp request timed out');\n xhr.onabort = handleError('Phraseapp request aborted');\n xhr.onreadystatechange = () => {\n if (xhr.status >= 400) {\n reject('Phraseapp error');\n }\n };\n\n const url = `https://api.phrase.com/v2/projects/${phraseProjectId}/locales/${localeId}/download?file_format=simple_json&include_empty_translations=true&fallback_locale_id=1e152e8a9188aed43d9f1b364a6044d5&access_token=${phraseAccessToken}`;\n xhr.open('GET', url, true);\n xhr.send();\n });\n};\n/**\n * Get phrase locale id from language code\n */\nconst getPhraseLocaleId = (languageCode: string) => {\n return AVAILABLE_LANGUAGES.find((l) => l.code === languageCode).phraseId;\n};\n\n/**\n * Check if query param to turn on or off phrase sdk is present\n * This must be run before app init\n */\nconst setIsPhraseSdkEnabled = (): void => {\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has('phrase')) {\n LocalizationService.isPhraseSdkEnabled = urlParams.get('phrase') === 'on' ? true : false;\n }\n};\n/**\n * Method to define init language and set angular locale data\n * Required in polyfills\n */\nexport const initLocalization = (): void => {\n setIsPhraseSdkEnabled();\n defineInitLanguage();\n};\n/**\n * Method to get the locale and associated translations\n */\nexport const getLocalizationData = async (): Promise<{\n locale: string;\n translations: Record;\n}> => {\n const locale = LocalizationService.initLanguage;\n const phraseId = getPhraseLocaleId(locale);\n const translations = await loadLocale(phraseId);\n return { locale, translations };\n};\n","'use strict';\n\n/**\n * @license Angular v\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n// Initialize global `Zone` constant.\n(function (global) {\n const performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n // Initialize before it's accessed below.\n // __Zone_symbol_prefix global can be used to override the default zone\n // symbol prefix with a custom one if needed.\n const symbolPrefix = global['__Zone_symbol_prefix'] || '__zone_symbol__';\n function __symbol__(name) {\n return symbolPrefix + name;\n }\n const checkDuplicate = global[__symbol__('forceDuplicateZoneCheck')] === true;\n if (global['Zone']) {\n // if global['Zone'] already exists (maybe zone.js was already loaded or\n // some other lib also registered a global object named Zone), we may need\n // to throw an error, but sometimes user may not want this error.\n // For example,\n // we have two web pages, page1 includes zone.js, page2 doesn't.\n // and the 1st time user load page1 and page2, everything work fine,\n // but when user load page2 again, error occurs because global['Zone'] already exists.\n // so we add a flag to let user choose whether to throw this error or not.\n // By default, if existing Zone is from zone.js, we will not throw the error.\n if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') {\n throw new Error('Zone already loaded.');\n } else {\n return global['Zone'];\n }\n }\n let Zone = /*#__PURE__*/(() => {\n class Zone {\n // tslint:disable-next-line:require-internal-with-underscore\n static {\n this.__symbol__ = __symbol__;\n }\n static assertZonePatched() {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + 'has been overwritten.\\n' + 'Most likely cause is that a Promise polyfill has been loaded ' + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + 'If you must load one, do so before loading zone.js.)');\n }\n }\n static get root() {\n let zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n }\n static get current() {\n return _currentZoneFrame.zone;\n }\n static get currentTask() {\n return _currentTask;\n }\n // tslint:disable-next-line:require-internal-with-underscore\n static __load_patch(name, fn, ignoreDuplicate = false) {\n if (patches.hasOwnProperty(name)) {\n // `checkDuplicate` option is defined from global variable\n // so it works for all modules.\n // `ignoreDuplicate` can work for the specified module\n if (!ignoreDuplicate && checkDuplicate) {\n throw Error('Already loaded patch: ' + name);\n }\n } else if (!global['__Zone_disable_' + name]) {\n const perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n }\n get parent() {\n return this._parent;\n }\n get name() {\n return this._name;\n }\n constructor(parent, zoneSpec) {\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate = new _ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n get(key) {\n const zone = this.getZoneWith(key);\n if (zone) return zone._properties[key];\n }\n getZoneWith(key) {\n let current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n }\n fork(zoneSpec) {\n if (!zoneSpec) throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n }\n wrap(callback, source) {\n if (typeof callback !== 'function') {\n throw new Error('Expecting function got: ' + callback);\n }\n const _callback = this._zoneDelegate.intercept(this, callback, source);\n const zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n }\n run(callback, applyThis, applyArgs, source) {\n _currentZoneFrame = {\n parent: _currentZoneFrame,\n zone: this\n };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n } finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runGuarded(callback, applyThis = null, applyArgs, source) {\n _currentZoneFrame = {\n parent: _currentZoneFrame,\n zone: this\n };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n } catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n } finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runTask(task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) {\n return;\n }\n const reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n const previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = {\n parent: _currentZoneFrame,\n zone: this\n };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = undefined;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n } catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n } finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || task.data && task.data.isPeriodic) {\n reEntryGuard && task._transitionTo(scheduled, running);\n } else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard && task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n }\n scheduleTask(task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n let newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n const zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n } catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n }\n scheduleMicroTask(source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined));\n }\n scheduleMacroTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n }\n scheduleEventTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n }\n cancelTask(task) {\n if (task.zone != this) throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n if (task.state !== scheduled && task.state !== running) {\n return;\n }\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n } catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n }\n _updateTaskCount(task, count) {\n const zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (let i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n }\n }\n return Zone;\n })();\n const DELEGATE_ZS = {\n name: '',\n onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState),\n onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task),\n onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs),\n onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task)\n };\n class _ZoneDelegate {\n constructor(zone, parentDelegate, zoneSpec) {\n this._taskCounts = {\n 'microTask': 0,\n 'macroTask': 0,\n 'eventTask': 0\n };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate._forkCurrZone);\n this._interceptZS = zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt = zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone = zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate._interceptCurrZone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt = zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate._invokeCurrZone);\n this._handleErrorZS = zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt = zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone = zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate._handleErrorCurrZone);\n this._scheduleTaskZS = zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt = zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone = zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate._scheduleTaskCurrZone);\n this._invokeTaskZS = zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt = zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone = zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate._invokeTaskCurrZone);\n this._cancelTaskZS = zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt = zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone = zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate._cancelTaskCurrZone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n const parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n fork(targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : new Zone(targetZone, zoneSpec);\n }\n intercept(targetZone, callback, source) {\n return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : callback;\n }\n invoke(targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : callback.apply(applyThis, applyArgs);\n }\n handleError(targetZone, error) {\n return this._handleErrorZS ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : true;\n }\n scheduleTask(targetZone, task) {\n let returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n // clang-format off\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n // clang-format on\n if (!returnTask) returnTask = task;\n } else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n } else if (task.type == microTask) {\n scheduleMicroTask(task);\n } else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n }\n invokeTask(targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : task.callback.apply(applyThis, applyArgs);\n }\n cancelTask(targetZone, task) {\n let value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n } else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n }\n hasTask(targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n } catch (err) {\n this.handleError(targetZone, err);\n }\n }\n // tslint:disable-next-line:require-internal-with-underscore\n _updateTaskCount(type, count) {\n const counts = this._taskCounts;\n const prev = counts[type];\n const next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n const isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n }\n }\n class ZoneTask {\n constructor(type, source, callback, options, scheduleFn, cancelFn) {\n // tslint:disable-next-line:require-internal-with-underscore\n this._zone = null;\n this.runCount = 0;\n // tslint:disable-next-line:require-internal-with-underscore\n this._zoneDelegates = null;\n // tslint:disable-next-line:require-internal-with-underscore\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n if (!callback) {\n throw new Error('callback is not defined');\n }\n this.callback = callback;\n const self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n } else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n static invokeTask(task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n } finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n }\n get zone() {\n return this._zone;\n }\n get state() {\n return this._state;\n }\n cancelScheduleRequest() {\n this._transitionTo(notScheduled, scheduling);\n }\n // tslint:disable-next-line:require-internal-with-underscore\n _transitionTo(toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n } else {\n throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \\'' + fromState2 + '\\'' : ''}, was '${this._state}'.`);\n }\n }\n toString() {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId.toString();\n } else {\n return Object.prototype.toString.call(this);\n }\n }\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n toJSON() {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const symbolSetTimeout = __symbol__('setTimeout');\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n let _microTaskQueue = [];\n let _isDrainingMicrotaskQueue = false;\n let nativeMicroTaskQueuePromise;\n function nativeScheduleMicroTask(func) {\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n let nativeThen = nativeMicroTaskQueuePromise[symbolThen];\n if (!nativeThen) {\n // native Promise is not patchable, we need to use `then` directly\n // issue 1078\n nativeThen = nativeMicroTaskQueuePromise['then'];\n }\n nativeThen.call(nativeMicroTaskQueuePromise, func);\n } else {\n global[symbolSetTimeout](func, 0);\n }\n }\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n nativeScheduleMicroTask(drainMicroTaskQueue);\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n const queue = _microTaskQueue;\n _microTaskQueue = [];\n for (let i = 0; i < queue.length; i++) {\n const task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n } catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const NO_ZONE = {\n name: 'NO ZONE'\n };\n const notScheduled = 'notScheduled',\n scheduling = 'scheduling',\n scheduled = 'scheduled',\n running = 'running',\n canceling = 'canceling',\n unknown = 'unknown';\n const microTask = 'microTask',\n macroTask = 'macroTask',\n eventTask = 'eventTask';\n const patches = {};\n const _api = {\n symbol: __symbol__,\n currentZoneFrame: () => _currentZoneFrame,\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: () => !Zone[__symbol__('ignoreConsoleErrorUncaughtError')],\n patchEventTarget: () => [],\n patchOnProperties: noop,\n patchMethod: () => noop,\n bindArguments: () => [],\n patchThen: () => noop,\n patchMacroTask: () => noop,\n patchEventPrototype: () => noop,\n isIEOrEdge: () => false,\n getGlobalObjects: () => undefined,\n ObjectDefineProperty: () => noop,\n ObjectGetOwnPropertyDescriptor: () => undefined,\n ObjectCreate: () => undefined,\n ArraySlice: () => [],\n patchClass: () => noop,\n wrapWithCurrentZone: () => noop,\n filterProperties: () => [],\n attachOriginToPatched: () => noop,\n _redefineProperty: () => noop,\n patchCallbacks: () => noop,\n nativeScheduleMicroTask: nativeScheduleMicroTask\n };\n let _currentZoneFrame = {\n parent: null,\n zone: new Zone(null, null)\n };\n let _currentTask = null;\n let _numberOfNestedTaskFrames = 0;\n function noop() {}\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(globalThis);\n\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n/// \n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nconst ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nconst ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nconst ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nconst ObjectCreate = Object.create;\n/** Array.prototype.slice */\nconst ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nconst ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nconst REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nconst ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nconst ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nconst TRUE_STR = 'true';\n/** false string const */\nconst FALSE_STR = 'false';\n/** Zone symbol prefix string const. */\nconst ZONE_SYMBOL_PREFIX = Zone.__symbol__('');\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nconst zoneSymbol = Zone.__symbol__;\nconst isWindowExists = typeof window !== 'undefined';\nconst internalWindow = isWindowExists ? window : undefined;\nconst _global = isWindowExists && internalWindow || globalThis;\nconst REMOVE_ATTRIBUTE = 'removeAttribute';\nfunction bindArguments(args, source) {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n const source = prototype.constructor['name'];\n for (let i = 0; i < fnNames.length; i++) {\n const name = fnNames[i];\n const delegate = prototype[name];\n if (delegate) {\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name);\n if (!isPropertyWritable(prototypeDesc)) {\n continue;\n }\n prototype[name] = (delegate => {\n const patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nconst isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isNode = !('nw' in _global) && typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]';\nconst isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isMix = typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]' && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\nconst zoneSymbolEventNames$1 = {};\nconst wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n let eventNameSymbol = zoneSymbolEventNames$1[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames$1[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n const target = this || event.target || _global;\n const listener = target[eventNameSymbol];\n let result;\n if (isBrowser && target === internalWindow && event.type === 'error') {\n // window.onerror have different signature\n // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror\n // and onerror callback will prevent default when callback return true\n const errorEvent = event;\n result = listener && listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error);\n if (result === true) {\n event.preventDefault();\n }\n } else {\n result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n let desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = {\n enumerable: true,\n configurable: true\n };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched');\n if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n const originalDescGet = desc.get;\n const originalDescSet = desc.set;\n // slice(2) cuz 'onclick' -> 'click', etc\n const eventName = prop.slice(2);\n let eventNameSymbol = zoneSymbolEventNames$1[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames$1[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n const previousValue = target[eventNameSymbol];\n if (typeof previousValue === 'function') {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n originalDescSet && originalDescSet.call(target, null);\n target[eventNameSymbol] = newValue;\n if (typeof newValue === 'function') {\n target.addEventListener(eventName, wrapFn, false);\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n const listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n } else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n let value = originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n obj[onPropPatchedSymbol] = true;\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (let i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n } else {\n const onProperties = [];\n for (const prop in obj) {\n if (prop.slice(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (let j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nconst originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n const OriginalClass = _global[className];\n if (!OriginalClass) return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n const a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n const instance = new OriginalClass(function () {});\n let prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob') continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n } else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n } else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n })(prop);\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction patchMethod(target, name, patchFn) {\n let proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n const delegateName = zoneSymbol(name);\n let delegate = null;\n if (proto && (!(delegate = proto[delegateName]) || !proto.hasOwnProperty(delegateName))) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n const patchDelegate = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n let setNative = null;\n function scheduleTask(task) {\n const data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, delegate => function (self, args) {\n const meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask);\n } else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n });\n}\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nlet isDetectedIEOrEdge = false;\nlet ieOrEdge = false;\nfunction isIE() {\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) {\n return true;\n }\n } catch (error) {}\n return false;\n}\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n } catch (error) {}\n return ieOrEdge;\n}\nZone.__load_patch('ZoneAwarePromise', (global, Zone, api) => {\n const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n const ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n const className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n const __symbol__ = api.symbol;\n const _uncaughtPromiseErrors = [];\n const isDisableWrappingUncaughtPromiseRejection = global[__symbol__('DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION')] !== false;\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n const creationTrace = '__creationTrace__';\n api.onUnhandledError = e => {\n if (api.showUncaughtError()) {\n const rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n } else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = () => {\n while (_uncaughtPromiseErrors.length) {\n const uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(() => {\n if (uncaughtPromiseError.throwOriginal) {\n throw uncaughtPromiseError.rejection;\n }\n throw uncaughtPromiseError;\n });\n } catch (error) {\n handleUnhandledRejection(error);\n }\n }\n };\n const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (typeof handler === 'function') {\n handler.call(this, e);\n }\n } catch (err) {}\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n const symbolState = __symbol__('state');\n const symbolValue = __symbol__('value');\n const symbolFinally = __symbol__('finally');\n const symbolParentPromiseValue = __symbol__('parentPromiseValue');\n const symbolParentPromiseState = __symbol__('parentPromiseState');\n const source = 'Promise.then';\n const UNRESOLVED = null;\n const RESOLVED = true;\n const REJECTED = false;\n const REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return v => {\n try {\n resolvePromise(promise, state, v);\n } catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n const once = function () {\n let wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n const TYPE_ERROR = 'Promise resolved with itself';\n const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n const onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n let then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n } catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n } else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n } catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n }\n } else {\n promise[symbolState] = state;\n const queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally\n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n const trace = Zone.currentTask && Zone.currentTask.data && Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: trace\n });\n }\n }\n for (let i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n let uncaughtPromiseError = value;\n try {\n // Here we throws a new Error to print more readable error log\n // and if the value is not an error, zone.js builds an `Error`\n // Object here to attach the stack information.\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) + (value && value.stack ? '\\n' + value.stack : ''));\n } catch (err) {\n uncaughtPromiseError = err;\n }\n if (isDisableWrappingUncaughtPromiseRejection) {\n // If disable wrapping uncaught promise reject\n // use the value instead of wrapping it.\n uncaughtPromiseError.throwOriginal = true;\n }\n uncaughtPromiseError.rejection = value;\n uncaughtPromiseError.promise = promise;\n uncaughtPromiseError.zone = Zone.current;\n uncaughtPromiseError.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(uncaughtPromiseError);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n const handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, {\n rejection: promise[symbolValue],\n promise: promise\n });\n }\n } catch (err) {}\n promise[symbolState] = REJECTED;\n for (let i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n const promiseState = promise[symbolState];\n const delegate = promiseState ? typeof onFulfilled === 'function' ? onFulfilled : forwardResolution : typeof onRejected === 'function' ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, () => {\n try {\n const parentPromiseValue = promise[symbolValue];\n const isFinallyPromise = !!chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n } catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n const noop = function () {};\n const AggregateError = global.AggregateError;\n class ZoneAwarePromise {\n static toString() {\n return ZONE_AWARE_PROMISE_TO_STRING;\n }\n static resolve(value) {\n if (value instanceof ZoneAwarePromise) {\n return value;\n }\n return resolvePromise(new this(null), RESOLVED, value);\n }\n static reject(error) {\n return resolvePromise(new this(null), REJECTED, error);\n }\n static withResolvers() {\n const result = {};\n result.promise = new ZoneAwarePromise((res, rej) => {\n result.resolve = res;\n result.reject = rej;\n });\n return result;\n }\n static any(values) {\n if (!values || typeof values[Symbol.iterator] !== 'function') {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n const promises = [];\n let count = 0;\n try {\n for (let v of values) {\n count++;\n promises.push(ZoneAwarePromise.resolve(v));\n }\n } catch (err) {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n if (count === 0) {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n let finished = false;\n const errors = [];\n return new ZoneAwarePromise((resolve, reject) => {\n for (let i = 0; i < promises.length; i++) {\n promises[i].then(v => {\n if (finished) {\n return;\n }\n finished = true;\n resolve(v);\n }, err => {\n errors.push(err);\n count--;\n if (count === 0) {\n finished = true;\n reject(new AggregateError(errors, 'All promises were rejected'));\n }\n });\n }\n });\n }\n static race(values) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n resolve(value);\n }\n function onReject(error) {\n reject(error);\n }\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n }\n static all(values) {\n return ZoneAwarePromise.allWithCallback(values);\n }\n static allSettled(values) {\n const P = this && this.prototype instanceof ZoneAwarePromise ? this : ZoneAwarePromise;\n return P.allWithCallback(values, {\n thenCallback: value => ({\n status: 'fulfilled',\n value\n }),\n errorCallback: err => ({\n status: 'rejected',\n reason: err\n })\n });\n }\n static allWithCallback(values, callback) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n // Start at 2 to prevent prematurely resolving if .then is called immediately.\n let unresolvedCount = 2;\n let valueIndex = 0;\n const resolvedValues = [];\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n const curValueIndex = valueIndex;\n try {\n value.then(value => {\n resolvedValues[curValueIndex] = callback ? callback.thenCallback(value) : value;\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }, err => {\n if (!callback) {\n reject(err);\n } else {\n resolvedValues[curValueIndex] = callback.errorCallback(err);\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }\n });\n } catch (thenErr) {\n reject(thenErr);\n }\n unresolvedCount++;\n valueIndex++;\n }\n // Make the unresolvedCount zero-based again.\n unresolvedCount -= 2;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n return promise;\n }\n constructor(executor) {\n const promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n const onceWrapper = once();\n executor && executor(onceWrapper(makeResolver(promise, RESOLVED)), onceWrapper(makeResolver(promise, REJECTED)));\n } catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n get [Symbol.toStringTag]() {\n return 'Promise';\n }\n get [Symbol.species]() {\n return ZoneAwarePromise;\n }\n then(onFulfilled, onRejected) {\n // We must read `Symbol.species` safely because `this` may be anything. For instance, `this`\n // may be an object without a prototype (created through `Object.create(null)`); thus\n // `this.constructor` will be undefined. One of the use cases is SystemJS creating\n // prototype-less objects (modules) via `Object.create(null)`. The SystemJS creates an empty\n // object and copies promise properties into that object (within the `getOrCreateLoad`\n // function). The zone.js then checks if the resolved value has the `then` method and invokes\n // it with the `value` context. Otherwise, this will throw an error: `TypeError: Cannot read\n // properties of undefined (reading 'Symbol(Symbol.species)')`.\n let C = this.constructor?.[Symbol.species];\n if (!C || typeof C !== 'function') {\n C = this.constructor || ZoneAwarePromise;\n }\n const chainPromise = new C(noop);\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n } else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n }\n catch(onRejected) {\n return this.then(null, onRejected);\n }\n finally(onFinally) {\n // See comment on the call to `then` about why thee `Symbol.species` is safely accessed.\n let C = this.constructor?.[Symbol.species];\n if (!C || typeof C !== 'function') {\n C = ZoneAwarePromise;\n }\n const chainPromise = new C(noop);\n chainPromise[symbolFinally] = symbolFinally;\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n } else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n }\n }\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n const NativePromise = global[symbolPromise] = global['Promise'];\n global['Promise'] = ZoneAwarePromise;\n const symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n const proto = Ctor.prototype;\n const prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n const originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n const wrapped = new ZoneAwarePromise((resolve, reject) => {\n originalThen.call(this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n api.patchThen = patchThen;\n function zoneify(fn) {\n return function (self, args) {\n let resultPromise = fn.apply(self, args);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n let ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n patchMethod(global, 'fetch', delegate => zoneify(delegate));\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n});\n\n// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', global => {\n // patch Func.prototype.toString to let them look like native\n const originalFunctionToString = Function.prototype.toString;\n const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n const PROMISE_SYMBOL = zoneSymbol('Promise');\n const ERROR_SYMBOL = zoneSymbol('Error');\n const newFunctionToString = function toString() {\n if (typeof this === 'function') {\n const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.call(originalDelegate);\n } else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n const nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.call(nativePromise);\n }\n }\n if (this === Error) {\n const nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.call(nativeError);\n }\n }\n }\n return originalFunctionToString.call(this);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n const originalObjectToString = Object.prototype.toString;\n const PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (typeof Promise === 'function' && this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.call(this);\n };\n});\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nlet passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n const options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n }\n });\n // Note: We pass the `options` object as the event handler too. This is not compatible with the\n // signature of `addEventListener` or `removeEventListener` but enables us to remove the handler\n // without an actual handler.\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n } catch (err) {\n passiveSupported = false;\n }\n}\n// an identifier to tell ZoneTask do not create a new invoke closure\nconst OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nconst zoneSymbolEventNames = {};\nconst globalSources = {};\nconst EVENT_NAME_SYMBOL_REGX = new RegExp('^' + ZONE_SYMBOL_PREFIX + '(\\\\w+)(true|false)$');\nconst IMMEDIATE_PROPAGATION_SYMBOL = zoneSymbol('propagationStopped');\nfunction prepareEventNames(eventName, eventNameToString) {\n const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR;\n const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n}\nfunction patchEventTarget(_global, api, apis, patchOptions) {\n const ADD_EVENT_LISTENER = patchOptions && patchOptions.add || ADD_EVENT_LISTENER_STR;\n const REMOVE_EVENT_LISTENER = patchOptions && patchOptions.rm || REMOVE_EVENT_LISTENER_STR;\n const LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.listeners || 'eventListeners';\n const REMOVE_ALL_LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.rmAll || 'removeAllListeners';\n const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n const PREPEND_EVENT_LISTENER = 'prependListener';\n const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n const invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n const delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = event => delegate.handleEvent(event);\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n // need to try/catch error here, otherwise, the error in one event listener\n // will break the executions of the other event listeners. Also error will\n // not remove the event listener when `once` options is true.\n let error;\n try {\n task.invoke(task, target, [event]);\n } catch (err) {\n error = err;\n }\n const options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n const delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options);\n }\n return error;\n };\n function globalCallback(context, event, isCapture) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n const target = context || event.target || _global;\n const tasks = target[zoneSymbolEventNames[event.type][isCapture ? TRUE_STR : FALSE_STR]];\n if (tasks) {\n const errors = [];\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n const err = invokeTask(tasks[0], target, event);\n err && errors.push(err);\n } else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n const copyTasks = tasks.slice();\n for (let i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n const err = invokeTask(copyTasks[i], target, event);\n err && errors.push(err);\n }\n }\n // Since there is only one error, we don't need to schedule microTask\n // to throw the error.\n if (errors.length === 1) {\n throw errors[0];\n } else {\n for (let i = 0; i < errors.length; i++) {\n const err = errors[i];\n api.nativeScheduleMicroTask(() => {\n throw err;\n });\n }\n }\n }\n }\n // global shared zoneAwareCallback to handle all event callback with capture = false\n const globalZoneAwareCallback = function (event) {\n return globalCallback(this, event, false);\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n const globalZoneAwareCaptureCallback = function (event) {\n return globalCallback(this, event, true);\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n let useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n const validateHandler = patchOptions && patchOptions.vh;\n let checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n let returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n let proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n const eventNameToString = patchOptions && patchOptions.eventNameToString;\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n const taskData = {};\n const nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n const nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = proto[REMOVE_EVENT_LISTENER];\n const nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = proto[LISTENERS_EVENT_LISTENER];\n const nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n let nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = proto[patchOptions.prepend];\n }\n /**\n * This util function will build an option object with passive option\n * to handle all possible input from the user.\n */\n function buildEventListenerOptions(options, passive) {\n if (!passiveSupported && typeof options === 'object' && options) {\n // doesn't support passive but user want to pass an object as options.\n // this will not work on some old browser, so we just pass a boolean\n // as useCapture parameter\n return !!options.capture;\n }\n if (!passiveSupported || !passive) {\n return options;\n }\n if (typeof options === 'boolean') {\n return {\n capture: options,\n passive: true\n };\n }\n if (!options) {\n return {\n passive: true\n };\n }\n if (typeof options === 'object' && options.passive !== false) {\n return {\n ...options,\n passive: true\n };\n }\n return options;\n }\n const customScheduleGlobal = function (task) {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n const customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n const symbolEventNames = zoneSymbolEventNames[task.eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n const customScheduleNonGlobal = function (task) {\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n const compareTaskCallbackVsDelegate = function (task, delegate) {\n const typeOfDelegate = typeof delegate;\n return typeOfDelegate === 'function' && task.callback === delegate || typeOfDelegate === 'object' && task.originalDelegate === delegate;\n };\n const compare = patchOptions && patchOptions.diff ? patchOptions.diff : compareTaskCallbackVsDelegate;\n const unpatchedEvents = Zone[zoneSymbol('UNPATCHED_EVENTS')];\n const passiveEvents = _global[zoneSymbol('PASSIVE_EVENTS')];\n const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) {\n return function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n let delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n if (isNode && eventName === 'uncaughtException') {\n // don't patch uncaughtException of nodejs to prevent endless loop\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n let isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n const passive = passiveSupported && !!passiveEvents && passiveEvents.indexOf(eventName) !== -1;\n const options = buildEventListenerOptions(arguments[2], passive);\n const signal = options && typeof options === 'object' && options.signal && typeof options.signal === 'object' ? options.signal : undefined;\n if (signal?.aborted) {\n // the signal is an aborted one, just return without attaching the event listener.\n return;\n }\n if (unpatchedEvents) {\n // check unpatched list\n for (let i = 0; i < unpatchedEvents.length; i++) {\n if (eventName === unpatchedEvents[i]) {\n if (passive) {\n return nativeListener.call(target, eventName, delegate, options);\n } else {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n }\n const capture = !options ? false : typeof options === 'boolean' ? true : options.capture;\n const once = options && typeof options === 'object' ? options.once : false;\n const zone = Zone.current;\n let symbolEventNames = zoneSymbolEventNames[eventName];\n if (!symbolEventNames) {\n prepareEventNames(eventName, eventNameToString);\n symbolEventNames = zoneSymbolEventNames[eventName];\n }\n const symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n let existingTasks = target[symbolEventName];\n let isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (let i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n } else {\n existingTasks = target[symbolEventName] = [];\n }\n let source;\n const constructorName = target.constructor['name'];\n const targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource + (eventNameToString ? eventNameToString(eventName) : eventName);\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n if (signal) {\n // if addEventListener with signal options, we don't pass it to\n // native addEventListener, instead we keep the signal setting\n // and handle ourselves.\n taskData.options.signal = undefined;\n }\n const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n if (signal) {\n // after task is scheduled, we need to store the signal back to task.options\n taskData.options.signal = signal;\n nativeListener.call(signal, 'abort', () => {\n task.zone.cancelTask(task);\n }, {\n once: true\n });\n }\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n if (!(!passiveSupported && typeof task.options === 'boolean')) {\n // if not support passive, and we pass an option object\n // to addEventListener, we should save the options to task\n task.options = options;\n }\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n } else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const options = arguments[2];\n const capture = !options ? false : typeof options === 'boolean' ? true : options.capture;\n const delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler && !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n const symbolEventNames = zoneSymbolEventNames[eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n // in the target, we have an event listener which is added by on_property\n // such as target.onclick = function() {}, so we need to clear this internal\n // property too if all delegates all removed\n if (typeof eventName === 'string') {\n const onPropertySymbol = ZONE_SYMBOL_PREFIX + 'ON_PROPERTY' + eventName;\n target[onPropertySymbol] = null;\n }\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const listeners = [];\n const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName);\n for (let i = 0; i < tasks.length; i++) {\n const task = tasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (!eventName) {\n const keys = Object.keys(target);\n for (let i = 0; i < keys.length; i++) {\n const prop = keys[i];\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n } else {\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const symbolEventNames = zoneSymbolEventNames[eventName];\n if (symbolEventNames) {\n const symbolEventName = symbolEventNames[FALSE_STR];\n const symbolCaptureEventName = symbolEventNames[TRUE_STR];\n const tasks = target[symbolEventName];\n const captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n const removeTasks = tasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n const removeTasks = captureTasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n let results = [];\n for (let i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n if (!eventName) {\n const foundTasks = [];\n for (let prop in target) {\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n const tasks = target[prop];\n if (tasks) {\n for (let i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n }\n let symbolEventName = zoneSymbolEventNames[eventName];\n if (!symbolEventName) {\n prepareEventNames(eventName);\n symbolEventName = zoneSymbolEventNames[eventName];\n }\n const captureFalseTasks = target[symbolEventName[FALSE_STR]];\n const captureTrueTasks = target[symbolEventName[TRUE_STR]];\n if (!captureFalseTasks) {\n return captureTrueTasks ? captureTrueTasks.slice() : [];\n } else {\n return captureTrueTasks ? captureFalseTasks.concat(captureTrueTasks) : captureFalseTasks.slice();\n }\n}\nfunction patchEventPrototype(global, api) {\n const Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', delegate => function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n });\n }\n}\nfunction patchCallbacks(api, target, targetName, method, callbacks) {\n const symbol = Zone.__symbol__(method);\n if (target[symbol]) {\n return;\n }\n const nativeDelegate = target[symbol] = target[method];\n target[method] = function (name, opts, options) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n const source = `${targetName}.${method}::` + callback;\n const prototype = opts.prototype;\n // Note: the `patchCallbacks` is used for patching the `document.registerElement` and\n // `customElements.define`. We explicitly wrap the patching code into try-catch since\n // callbacks may be already patched by other web components frameworks (e.g. LWC), and they\n // make those properties non-writable. This means that patching callback will throw an error\n // `cannot assign to read-only property`. See this code as an example:\n // https://github.com/salesforce/lwc/blob/master/packages/@lwc/engine-core/src/framework/base-bridge-element.ts#L180-L186\n // We don't want to stop the application rendering if we couldn't patch some\n // callback, e.g. `attributeChangedCallback`.\n try {\n if (prototype.hasOwnProperty(callback)) {\n const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = api.wrapWithCurrentZone(descriptor.value, source);\n api._redefineProperty(opts.prototype, callback, descriptor);\n } else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n } else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n } catch {\n // Note: we leave the catch block empty since there's no way to handle the error related\n // to non-writable property.\n }\n });\n }\n return nativeDelegate.call(target, name, opts, options);\n };\n api.attachOriginToPatched(target[method], nativeDelegate);\n}\n\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties || ignoreProperties.length === 0) {\n return onProperties;\n }\n const tip = ignoreProperties.filter(ip => ip.target === target);\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n const targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(op => targetIgnoreProperties.indexOf(op) === -1);\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n const filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\n/**\n * Get all event name properties which the event name startsWith `on`\n * from the target object itself, inherited properties are not considered.\n */\nfunction getOnEventNames(target) {\n return Object.getOwnPropertyNames(target).filter(name => name.startsWith('on') && name.length > 2).map(name => name.substring(2));\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n if (Zone[api.symbol('patchEvents')]) {\n // events are already been patched by legacy patch.\n return;\n }\n const ignoreProperties = _global['__Zone_ignore_on_properties'];\n // for browsers that we can patch the descriptor: Chrome & Firefox\n let patchTargets = [];\n if (isBrowser) {\n const internalWindow = window;\n patchTargets = patchTargets.concat(['Document', 'SVGElement', 'Element', 'HTMLElement', 'HTMLBodyElement', 'HTMLMediaElement', 'HTMLFrameSetElement', 'HTMLFrameElement', 'HTMLIFrameElement', 'HTMLMarqueeElement', 'Worker']);\n const ignoreErrorProperties = isIE() ? [{\n target: internalWindow,\n ignoreProperties: ['error']\n }] : [];\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, getOnEventNames(internalWindow), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n }\n patchTargets = patchTargets.concat(['XMLHttpRequest', 'XMLHttpRequestEventTarget', 'IDBIndex', 'IDBRequest', 'IDBOpenDBRequest', 'IDBDatabase', 'IDBTransaction', 'IDBCursor', 'WebSocket']);\n for (let i = 0; i < patchTargets.length; i++) {\n const target = _global[patchTargets[i]];\n target && target.prototype && patchFilteredProperties(target.prototype, getOnEventNames(target.prototype), ignoreProperties);\n }\n}\nZone.__load_patch('util', (global, Zone, api) => {\n // Collect native event names by looking at properties\n // on the global namespace, e.g. 'onclick'.\n const eventNames = getOnEventNames(global);\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n api.patchMacroTask = patchMacroTask;\n // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to\n // define which events will not be patched by `Zone.js`.\n // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep\n // the name consistent with angular repo.\n // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for\n // backwards compatibility.\n const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS');\n if (global[SYMBOL_UNPATCHED_EVENTS]) {\n global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS];\n }\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n api.patchEventPrototype = patchEventPrototype;\n api.patchEventTarget = patchEventTarget;\n api.isIEOrEdge = isIEOrEdge;\n api.ObjectDefineProperty = ObjectDefineProperty;\n api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor;\n api.ObjectCreate = ObjectCreate;\n api.ArraySlice = ArraySlice;\n api.patchClass = patchClass;\n api.wrapWithCurrentZone = wrapWithCurrentZone;\n api.filterProperties = filterProperties;\n api.attachOriginToPatched = attachOriginToPatched;\n api._redefineProperty = Object.defineProperty;\n api.patchCallbacks = patchCallbacks;\n api.getGlobalObjects = () => ({\n globalSources,\n zoneSymbolEventNames,\n eventNames,\n isBrowser,\n isMix,\n isNode,\n TRUE_STR,\n FALSE_STR,\n ZONE_SYMBOL_PREFIX,\n ADD_EVENT_LISTENER_STR,\n REMOVE_EVENT_LISTENER_STR\n });\n});\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nfunction patchQueueMicrotask(global, api) {\n api.patchMethod(global, 'queueMicrotask', delegate => {\n return function (self, args) {\n Zone.current.scheduleMicroTask('queueMicrotask', args[0]);\n };\n });\n}\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nconst taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n let setNative = null;\n let clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n const tasksByHandleId = {};\n function scheduleTask(task) {\n const data = task.data;\n data.args[0] = function () {\n return task.invoke.apply(this, arguments);\n };\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative.call(window, task.data.handleId);\n }\n setNative = patchMethod(window, setName, delegate => function (self, args) {\n if (typeof args[0] === 'function') {\n const options = {\n isPeriodic: nameSuffix === 'Interval',\n delay: nameSuffix === 'Timeout' || nameSuffix === 'Interval' ? args[1] || 0 : undefined,\n args: args\n };\n const callback = args[0];\n args[0] = function timer() {\n try {\n return callback.apply(this, arguments);\n } finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n // https://github.com/angular/angular/issues/40387\n // Cleanup tasksByHandleId should be handled before scheduleTask\n // Since some zoneSpec may intercept and doesn't trigger\n // scheduleFn(scheduleTask) provided here.\n if (!options.isPeriodic) {\n if (typeof options.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[options.handleId];\n } else if (options.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n options.handleId[taskSymbol] = null;\n }\n }\n }\n };\n const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n const handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n } else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n } else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n });\n clearNative = patchMethod(window, cancelName, delegate => function (self, args) {\n const id = args[0];\n let task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n } else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' && (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n } else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n } else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n });\n}\nfunction patchCustomElements(_global, api) {\n const {\n isBrowser,\n isMix\n } = api.getGlobalObjects();\n if (!isBrowser && !isMix || !_global['customElements'] || !('customElements' in _global)) {\n return;\n }\n // https://html.spec.whatwg.org/multipage/custom-elements.html#concept-custom-element-definition-lifecycle-callbacks\n const callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback', 'formAssociatedCallback', 'formDisabledCallback', 'formResetCallback', 'formStateRestoreCallback'];\n api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks);\n}\nfunction eventTargetPatch(_global, api) {\n if (Zone[api.symbol('patchEventTarget')]) {\n // EventTarget is already patched.\n return;\n }\n const {\n eventNames,\n zoneSymbolEventNames,\n TRUE_STR,\n FALSE_STR,\n ZONE_SYMBOL_PREFIX\n } = api.getGlobalObjects();\n // predefine all __zone_symbol__ + eventName + true/false string\n for (let i = 0; i < eventNames.length; i++) {\n const eventName = eventNames[i];\n const falseEventName = eventName + FALSE_STR;\n const trueEventName = eventName + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n }\n const EVENT_TARGET = _global['EventTarget'];\n if (!EVENT_TARGET || !EVENT_TARGET.prototype) {\n return;\n }\n api.patchEventTarget(_global, api, [EVENT_TARGET && EVENT_TARGET.prototype]);\n return true;\n}\nfunction patchEvent(global, api) {\n api.patchEventPrototype(global, api);\n}\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('legacy', global => {\n const legacyPatch = global[Zone.__symbol__('legacyPatch')];\n if (legacyPatch) {\n legacyPatch();\n }\n});\nZone.__load_patch('timers', global => {\n const set = 'set';\n const clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', global => {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', (global, Zone) => {\n const blockingMethods = ['alert', 'prompt', 'confirm'];\n for (let i = 0; i < blockingMethods.length; i++) {\n const name = blockingMethods[i];\n patchMethod(global, name, (delegate, symbol, name) => {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', (global, Zone, api) => {\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, api, [XMLHttpRequestEventTarget.prototype]);\n }\n});\nZone.__load_patch('MutationObserver', (global, Zone, api) => {\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n});\nZone.__load_patch('IntersectionObserver', (global, Zone, api) => {\n patchClass('IntersectionObserver');\n});\nZone.__load_patch('FileReader', (global, Zone, api) => {\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', (global, Zone, api) => {\n propertyDescriptorPatch(api, global);\n});\nZone.__load_patch('customElements', (global, Zone, api) => {\n patchCustomElements(global, api);\n});\nZone.__load_patch('XHR', (global, Zone) => {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n const XHR_TASK = zoneSymbol('xhrTask');\n const XHR_SYNC = zoneSymbol('xhrSync');\n const XHR_LISTENER = zoneSymbol('xhrListener');\n const XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n const XHR_URL = zoneSymbol('xhrURL');\n const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled');\n function patchXHR(window) {\n const XMLHttpRequest = window['XMLHttpRequest'];\n if (!XMLHttpRequest) {\n // XMLHttpRequest is not available in service worker\n return;\n }\n const XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n const READY_STATE_CHANGE = 'readystatechange';\n const SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n const data = task.data;\n const target = data.target;\n target[XHR_SCHEDULED] = false;\n target[XHR_ERROR_BEFORE_SCHEDULED] = false;\n // remove existing event listener\n const listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n const newListener = target[XHR_LISTENER] = () => {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) {\n // check whether the xhr has registered onload listener\n // if that is the case, the task should invoke after all\n // onload listeners finish.\n // Also if the request failed without response (status = 0), the load event handler\n // will not be triggered, in that case, we should also invoke the placeholder callback\n // to close the XMLHttpRequest::send macroTask.\n // https://github.com/angular/angular/issues/38795\n const loadTasks = target[Zone.__symbol__('loadfalse')];\n if (target.status !== 0 && loadTasks && loadTasks.length > 0) {\n const oriInvoke = task.invoke;\n task.invoke = function () {\n // need to load the tasks again, because in other\n // load listener, they may remove themselves\n const loadTasks = target[Zone.__symbol__('loadfalse')];\n for (let i = 0; i < loadTasks.length; i++) {\n if (loadTasks[i] === task) {\n loadTasks.splice(i, 1);\n }\n }\n if (!data.aborted && task.state === SCHEDULED) {\n oriInvoke.call(task);\n }\n };\n loadTasks.push(task);\n } else {\n task.invoke();\n }\n } else if (!data.aborted && target[XHR_SCHEDULED] === false) {\n // error occurs when xhr.send()\n target[XHR_ERROR_BEFORE_SCHEDULED] = true;\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n const storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n target[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() {}\n function clearTask(task) {\n const data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n });\n const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n const fetchTaskAborting = zoneSymbol('fetchTaskAborting');\n const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling');\n const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) {\n if (Zone.current[fetchTaskScheduling] === true) {\n // a fetch is scheduling, so we are using xhr to polyfill fetch\n // and because we already schedule macroTask for fetch, we should\n // not schedule a macroTask for xhr again\n return sendNative.apply(self, args);\n }\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n } else {\n const options = {\n target: self,\n url: self[XHR_URL],\n isPeriodic: false,\n args: args,\n aborted: false\n };\n const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted && task.state === SCHEDULED) {\n // xhr request throw error when send\n // we should invoke task instead of leaving a scheduled\n // pending macroTask\n task.invoke();\n }\n }\n });\n const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) {\n const task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || task.data && task.data.aborted) {\n return;\n }\n task.zone.cancelTask(task);\n } else if (Zone.current[fetchTaskAborting] === true) {\n // the abort is called from fetch polyfill, we need to call native abort of XHR.\n return abortNative.apply(self, args);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n });\n }\n});\nZone.__load_patch('geolocation', global => {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', (global, Zone) => {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n const eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(eventTask => {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n const PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n const evt = new PromiseRejectionEvent(evtName, {\n promise: e.promise,\n reason: e.rejection\n });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] = findPromiseRejectionHandler('rejectionhandled');\n }\n});\nZone.__load_patch('queueMicrotask', (global, Zone, api) => {\n patchQueueMicrotask(global, api);\n});","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { AppModule } from '@app/app.module';\nimport { environment } from '@env/environment';\nimport { loadTranslations } from '@angular/localize';\nimport { getLocalizationData } from 'locale-loader';\nimport 'zone.js';\nimport { TranslateHelper } from '@app/shared/utils/static-helpers/translate';\n\nif (environment.production) {\n enableProdMode();\n}\n\ngetLocalizationData()\n .then((data) => {\n TranslateHelper.saveTranslation(data);\n loadTranslations(data.translations);\n TranslateHelper.saveTranslationBackup(data);\n })\n .catch((e) => {\n loadTranslations(TranslateHelper.getTranslationBackup().translations);\n console.error(e);\n })\n .finally(() => {\n platformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch((err) => console.error(err));\n });\n"],"mappings":"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T,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACrB,CAAC,EACD,IAAKQ,EAAa,CAChB,cAAeP,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACrB,CAAC,EACD,UAAWM,EAAa,CACtB,cAAeL,GACf,kBAAmB,MACnB,cAAeC,GACf,kBAAmB,KACrB,CAAC,CACH,EACOM,GAAQL,GChFf,IAAIM,GAAS,CACX,KAAM,KACN,eAAgBC,GAChB,WAAYC,GACZ,eAAgBC,GAChB,SAAUC,GACV,MAAOC,GACP,QAAS,CACP,aAAc,EAGd,sBAAuB,CACzB,CACF,EACOC,GAAQN,GC/Bf,IAAIO,GAAuB,CACzB,iBAAkB,CAChB,WAAY,CACV,IAAK,wBACL,MAAO,gCACT,EACA,gBAAiB,CACf,IAAK,wBACL,MAAO,gCACT,CACF,EACA,SAAU,CACR,WAAY,CACV,IAAK,YACL,MAAO,oBACT,EACA,gBAAiB,CACf,IAAK,YACL,MAAO,oBACT,CACF,EACA,YAAa,CACX,WAAY,eACZ,gBAAiB,eACnB,EACA,iBAAkB,CAChB,WAAY,CACV,IAAK,uBACL,MAAO,+BACT,EACA,gBAAiB,CACf,IAAK,uBACL,MAAO,+BACT,CACF,EACA,SAAU,CACR,WAAY,CACV,IAAK,WACL,MAAO,mBACT,EACA,gBAAiB,CACf,IAAK,WACL,MAAO,mBACT,CACF,EACA,YAAa,CACX,WAAY,CACV,IAAK,gBACL,MAAO,wBACT,EACA,gBAAiB,CACf,IAAK,gBACL,MAAO,wBACT,CACF,EACA,OAAQ,CACN,WAAY,CACV,IAAK,WACL,MAAO,mBACT,EACA,gBAAiB,CACf,IAAK,WACL,MAAO,mBACT,CACF,EACA,MAAO,CACL,WAAY,CACV,IAAK,QACL,MAAO,gBACT,EACA,gBAAiB,CACf,IAAK,QACL,MAAO,iBACT,CACF,EACA,YAAa,CACX,WAAY,CACV,IAAK,eACL,MAAO,uBACT,EACA,gBAAiB,CACf,IAAK,eACL,MAAO,uBACT,CACF,EACA,OAAQ,CACN,WAAY,CACV,IAAK,UACL,MAAO,kBACT,EACA,gBAAiB,CACf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,MAAOC,GACP,QAAS,CACP,aAAc,EAGd,sBAAuB,CACzB,CACF,EACOC,GAAQN,GChCf,IAAIO,GAAuB,CACzB,iBAAkB,CAChB,WAAY,CACV,IAAK,6BACL,MAAO,iCACT,EACA,gBAAiB,CACf,IAAK,8BACL,MAAO,gCACT,CACF,EACA,SAAU,CACR,WAAY,CACV,IAAK,gBACL,MAAO,oBACT,EACA,gBAAiB,CACf,IAAK,iBACL,MAAO,mBACT,CACF,EACA,YAAa,CACX,WAAY,eACZ,gBAAiB,cACnB,EACA,iBAAkB,CAChB,WAAY,CACV,IAAK,4BACL,MAAO,gCACT,EACA,gBAAiB,CACf,IAAK,6BACL,MAAO,+BACT,CACF,EACA,SAAU,CACR,WAAY,CACV,IAAK,eACL,MAAO,mBACT,EACA,gBAAiB,CACf,IAAK,gBACL,MAAO,kBACT,CACF,EACA,YAAa,CACX,WAAY,CACV,IAAK,oBACL,MAAO,uBACT,EACA,gBAAiB,CACf,IAAK,qBACL,MAAO,uBACT,CACF,EACA,OAAQ,CACN,WAAY,CACV,IAAK,cACL,MAAO,iBACT,EACA,gBAAiB,CACf,IAAK,eACL,MAAO,iBACT,CACF,EACA,MAAO,CACL,WAAY,CACV,IAAK,iBACL,MAAO,oBACT,EACA,gBAAiB,CACf,IAAK,kBACL,MAAO,oBACT,CACF,EACA,YAAa,CACX,WAAY,CACV,IAAK,wBACL,MAAO,4BACT,EACA,gBAAiB,CACf,IAAK,yBACL,MAAO,2BACT,CACF,EACA,OAAQ,CACN,WAAY,CACV,IAAK,kBACL,MAAO,sBACT,EACA,gBAAiB,CACf,IAAK,mBACL,MAAO,qBACT,CACF,EACA,aAAc,CACZ,WAAY,CACV,IAAK,mBACL,MAAO,sBACT,EACA,gBAAiB,CACf,IAAK,mBACL,MAAO,qBACT,CACF,EACA,QAAS,CACP,WAAY,CACV,IAAK,aACL,MAAO,gBACT,EACA,gBAAiB,CACf,IAAK,aACL,MAAO,eACT,CACF,EACA,YAAa,CACX,WAAY,CACV,IAAK,qBACL,MAAO,wBACT,EACA,gBAAiB,CACf,IAAK,qBACL,MAAO,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","names":["require_cjs","__commonJSMin","exports","module","isMergeableObject","value","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","options","deepmerge","defaultArrayMerge","target","source","element","getMergeFunction","key","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","invalidTimingValue","exp","RuntimeError","negativeStepValue","negativeDelayValue","invalidStyleParams","varName","invalidParamValue","invalidNodeType","nodeType","invalidCssUnitValue","userProvidedProperty","value","invalidTrigger","invalidDefinition","invalidState","metadataName","missingSubs","invalidStyleValue","invalidParallelAnimation","prop","firstStart","firstEnd","secondStart","secondEnd","RuntimeError","invalidKeyframes","invalidOffset","keyframeOffsetsOutOfOrder","keyframesMissingOffsets","invalidStagger","invalidQuery","selector","invalidExpression","expr","invalidTransitionAlias","alias","triggerBuildFailed","name","errors","RuntimeError","animationFailed","registerFailed","missingOrDestroyedAnimation","createAnimationFailed","missingPlayer","id","missingTrigger","phase","missingEvent","unsupportedTriggerEvent","unregisteredTrigger","triggerTransitionsFailed","transitionFailed","name","errors","RuntimeError","optimizeGroupPlayer","players","NoopAnimationPlayer","AnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","postStyles","errors","normalizedKeyframes","previousOffset","previousKeyframe","kf","offset","isSameOffset","normalizedKeyframe","val","prop","normalizedProp","normalizedValue","ɵPRE_STYLE","AUTO_STYLE","animationFailed","listenOnPlayer","player","eventName","event","callback","copyAnimationEvent","e","phaseName","totalTime","disabled","makeAnimationEvent","data","element","triggerName","fromState","toState","getOrSetDefaultValue","map","key","defaultValue","value","parseTimelineCommand","command","separatorPos","id","action","documentElement","getParentElement","parent","containsVendorPrefix","_CACHED_BODY","_IS_WEBKIT","validateStyleProperty","getBodyNode","result","getBodyNode","containsElement","elm1","elm2","getParentElement","invokeQuery","element","selector","multi","elem","NoopAnimationDriver","_NoopAnimationDriver","prop","validateStyleProperty","_element","_selector","elm1","elm2","containsElement","element","getParentElement","selector","multi","invokeQuery","defaultValue","keyframes","duration","delay","easing","previousPlayers","scrubberAccessRequested","NoopAnimationPlayer","t","ɵɵdefineInjectable","_AnimationDriver","AnimationDriver","AnimationStyleNormalizer","ONE_SECOND","SUBSTITUTION_EXPR_START","SUBSTITUTION_EXPR_END","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","value","matches","_convertTimeValueToMS","unit","resolveTiming","timings","errors","allowNegativeValues","parseTimeExpression","exp","regex","duration","delay","easing","invalidTimingValue","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","normalizeKeyframes","keyframes","kf","setStyles","element","styles","formerStyles","val","prop","camelProp","dashCaseToCamelCase","eraseStyles","_","normalizeAnimationEntry","steps","sequence","validateStyleParams","value","options","errors","params","matches","extractStyleParams","varName","invalidStyleParams","PARAM_REGEX","SUBSTITUTION_EXPR_START","SUBSTITUTION_EXPR_END","match","interpolateParams","original","str","localVal","invalidParamValue","DASH_CASE_REGEXP","input","m","allowPreviousPlayerStylesMerge","duration","delay","balancePreviousStylesIntoKeyframes","element","keyframes","previousStyles","startingKeyframe","missingStyleProps","val","prop","kf","computeStyle","visitDslNode","visitor","node","context","AnimationMetadataType","invalidNodeType","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","AnimationStyleNormalizer","propertyName","errors","dashCaseToCamelCase","userProvidedProperty","normalizedProperty","value","unit","strVal","valAndSuffixMatch","invalidCssUnitValue","ANY_STATE","parseTransitionExpr","transitionValue","errors","expressions","str","parseInnerTransitionStr","eventStr","result","parseAnimationAlias","match","invalidExpression","fromState","separator","toState","makeLambdaFromStates","isFullAnyStateExpr","alias","invalidTransitionAlias","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN","SELF_TOKEN_REGEX","buildAnimationAst","driver","metadata","warnings","AnimationAstBuilderVisitor","ROOT_SELECTOR","_driver","context","AnimationAstBuilderContext","visitDslNode","normalizeAnimationEntry","queryCount","depCount","states","transitions","invalidTrigger","def","AnimationMetadataType","stateDef","name","n","transition","invalidDefinition","styleAst","astParams","missingSubs","params","style","value","extractStyleParams","sub","invalidState","animation","matchers","normalizeAnimationOptions","s","currentTime","furthestTime","steps","step","innerAst","timingAst","constructTimingAst","styleMetadata","isEmpty","newStyleData","_styleAst","ast","styles","metadataStyles","styleTuple","AUTO_STYLE","invalidStyleValue","containsDynamicStyles","collectedEasing","styleData","SUBSTITUTION_EXPR_START","timings","endTime","startTime","tuple","prop","collectedStyles","collectedEntry","updateCollectedStyle","invalidParallelAnimation","validateStyleParams","invalidKeyframes","MAX_KEYFRAME_OFFSET","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","previousOffset","keyframes","offsetVal","consumeOffset","offset","invalidOffset","keyframeOffsetsOutOfOrder","length","generatedOffset","keyframesMissingOffsets","limit","currentAnimateTimings","animateDuration","kf","i","durationUpToThisFrame","parentSelector","options","selector","includeSelf","normalizeSelector","getOrSetDefaultValue","invalidStagger","resolveTiming","hasAmpersand","token","NG_TRIGGER_SELECTOR","NG_ANIMATING_SELECTOR","normalizeParams","obj","__spreadValues","duration","makeTimingAst","strValue","v","delay","easing","createTimelineInstruction","element","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","instructions","existingInstructions","ONE_FRAME_IN_MILLISECONDS","ENTER_TOKEN","ENTER_TOKEN_REGEX","LEAVE_TOKEN","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","AnimationTimelineContext","resolveTimingValue","timelines","timeline","lastRootTimeline","elementInstructions","innerContext","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","interpolateParams","instruction","instructionTimings","subContextCount","ctx","DEFAULT_NOOP_PREVIOUS_NODE","innerTimelines","timingValue","innerTimeline","elms","sameElementTimeline","parentContext","tl","maxTime","startingTime","_AnimationTimelineContext","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","oldParams","newTime","target","updatedTimings","builder","SubTimelineBuilder","time","originalSelector","optional","results","multi","elements","invalidQuery","_TimelineBuilder","_elementTimelineStylesLookup","hasPreStyleStep","input","flattenStyles","val","properties","details1","details0","finalKeyframes","keyframe","finalKeyframe","ɵPRE_STYLE","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","totalTime","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","timeAtKeyframe","decimalPoints","mult","allStyles","allProperties","createTransitionInstruction","triggerName","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","stateName","styler","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","elm","oneOrMoreTransitionsMatch","matchFns","currentState","nextState","element","params","fn","applyParamDefaults","userParams","defaults","result","__spreadValues","key","value","AnimationStateStyles","styles","defaultParams","normalizer","errors","finalStyles","combinedParams","val","prop","interpolateParams","normalizedProp","buildTrigger","name","ast","AnimationTrigger","_normalizer","balanceProperties","AnimationTransitionFactory","createFallbackTransition","f","triggerName","states","matchers","fromState","toState","animation","AnimationMetadataType","transition","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","ElementInstructionMap","TimelineAnimationEngine","bodyNode","_driver","id","metadata","warnings","buildAnimationAst","registerFailed","i","preStyles","postStyles","keyframes","normalizeKeyframes$1","options","instructions","autoStylesMap","buildAnimationTimelines","ENTER_CLASSNAME","LEAVE_CLASSNAME","inst","getOrSetDefaultValue","missingOrDestroyedAnimation","createAnimationFailed","_","AUTO_STYLE","players","player","optimizeGroupPlayer","index","missingPlayer","eventName","callback","baseEvent","makeAnimationEvent","listenOnPlayer","command","args","QUEUED_CLASSNAME","QUEUED_SELECTOR","DISABLED_CLASSNAME","DISABLED_SELECTOR","STAR_CLASSNAME","STAR_SELECTOR","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","input","namespaceId","isObj","normalizeTriggerValue","_a","__objRest","newParams","oldParams","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","addClass","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","listeners","data","triggersWithStates","NG_TRIGGER_CLASSNAME","trigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","fromStyles","toStyles","eraseStyles","setStyles","playersOnElement","isFallbackTransition","removeClass","entry","elementPlayers","rootElement","context","elements","NG_TRIGGER_SELECTOR","elm","namespaces","ns","destroyAfterComplete","triggerStates","previousTriggersValues","state","elementStates","visitedTriggers","listener","engine","containsPotentialParentTransition","currentPlayers","parent","removalFlag","microtaskId","a","b","d0","d1","p","TransitionAnimationEngine","driver","scheduler","namespaceList","namespacesByHostElement","found","ancestor","ancestorNs","stateValue","isElementNode","insertBefore","details","hostNS","hasAnimation","subTimelines","enterClassName","leaveClassName","skipBuildAst","containerElement","NG_ANIMATING_SELECTOR","resolve","node","cleanupFns","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","queriedElements","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","nodes","root","className","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","previousValue","nodeIsOrphaned","instruction","timelines","tl","tuple","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","ɵPRE_STYLE","post","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","parentPlayers","playersForElement","queriedPlayerResults","queriedInnerElements","j","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","NoopAnimationPlayer","previousPlayers","flattenGroupPlayers","pp","wrappedPlayer","deleteOrUnsetInMap","NG_ANIMATING_CLASSNAME","callbacks","totalTime","phaseName","map","currentValues","cloakElement","oldValue","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","props","roots","rootMap","NULL_NODE","nodeSet","localRootMap","getRoot","finalPlayers","_flattenGroupPlayersRecur","AnimationGroupPlayer","k1","k2","postEntry","preEntry","AnimationEngine","doc","componentId","cacheKey","triggerBuildFailed","disable","property","action","parseTimelineCommand","eventPhase","cb","packageNonAnimatableStyles","startStyles","endStyles","filterNonAnimatableStyles","SpecialCasedStyles","_SpecialCasedStyles","_element","_startStyles","_endStyles","initialStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","onFinish","kfs","frame","computeStyle","methods","WebAnimationsDriver","_selector","elm1","elm2","containsElement","getParentElement","selector","multi","invokeQuery","defaultValue","duration","delay","easing","fill","playerOptions","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","_keyframes","normalizeKeyframes","balancePreviousStylesIntoKeyframes","specialStyles","ANIMATION_PREFIX","DISABLE_ANIMATIONS_FLAG","BaseAnimationRenderer","namespaceId","delegate","engine","_onDestroy","node","name","namespace","value","parent","newChild","refChild","isMove","oldChild","isHostElement","selectorOrNode","preserveContent","el","style","flags","target","eventName","callback","element","AnimationRenderer","factory","onDestroy","resolveElementFromTarget","phase","parseTriggerCallbackName","event","countId","triggerName","dotIndex","trigger","AnimationRendererFactory","_zone","parentNode","hostElement","type","EMPTY_NAMESPACE_ID","cache","renderer","onRendererDestroy","componentId","registerTrigger","count","fn","data","animationCallbacksBuffer","tuple","InjectableAnimationEngine","_InjectableAnimationEngine","AnimationEngine","doc","driver","normalizer","inject","ChangeDetectionScheduler","t","ɵɵinject","DOCUMENT","AnimationDriver","AnimationStyleNormalizer","ɵɵdefineInjectable","instantiateDefaultStyleNormalizer","WebAnimationsStyleNormalizer","instantiateRendererFactory","renderer","engine","zone","AnimationRendererFactory","SHARED_ANIMATION_PROVIDERS","RendererFactory2","DomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","WebAnimationsDriver","ANIMATION_MODULE_TYPE","BROWSER_NOOP_ANIMATIONS_PROVIDERS","NoopAnimationDriver","BrowserAnimationsModule","_BrowserAnimationsModule","config","ɵɵdefineNgModule","ɵɵdefineInjector","BrowserModule","ProgressBarComponent","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","_ProgressBarComponent","CoreModule","constructor","parentModule","Error","ɵɵinject","provide","HTTP_INTERCEPTORS","useClass","TokenInterceptor","multi","AnalyticsInterceptor","provideHttpClient","withInterceptors","UserSessionAnalyticsInterceptor","withInterceptorsFromDi","WindowService","ChartService","DomService","ModalService","LoaderService","ScriptService","GTMService","PetCommunicationService","StartFlowService","ApiService","ApiManagerService","ObservablesLayerService","ProductService","VetService","NutritionService","EnumsService","EmailService","ActionCommunicationService","UploadService","GtmEventsService","OrderService","Logger","BlobService","POLetterService","RenalDetectService","DatePipe","ArianeTranslationPipe","imports","CommonModule","RouterModule","HttpClientModule","AuthModule","MatDialogModule","SharedModule","forRoot","_CoreModule","HeaderComponent","NgClass","NgForOf","NgIf","RouterLink","RouterLinkActive","IconComponent","MatTooltip","TitleCasePipe","TranslatePipe","renalDetectFeatureKey","import_deepmerge","INIT_ACTION","UPDATE_ACTION","detectDate","dateReviver","_key","value","dummyReviver","checkIsBrowserEnv","validateStateKeys","keys","key","attr","rehydrateApplicationState","storage","storageKeySerializer","restoreDates","acc","curr","reviver","deserialize","decrypt","stateSlice","isObjectRegex","raw","createStateSlice","existingSlice","filter","memo","element","syncStateUpdate","state","removeOnUndefined","syncCondition","e","replacer","space","encrypt","name","defaultMergeReducer","rehydratedState","action","deepmerge","destinationArray","sourceArray","options","localStorageSync","config","reducer","mergeReducer","stateKeys","nextState","__spreadValues","initialConsultationState","patient","petOwner","renalDetectRecommendation","renalDetectNutritionalChoice","lastConsultation","creatingCurrentConsultation","currentConsultation","selectedDryProduct","selectedDryPackId","selectedWetProduct","selectedWetPackId","allowanceParams","currentConsultationVisitDate","skipProductBook","expectedNextVisit","vetSourceOrderStatus","consultationReducer","createReducer","initialConsultationState","on","setConsultationAllowanceParams","state","action","__spreadProps","__spreadValues","allowanceParams","value","setConsultationPatient","patient","setConsultationPetOwner","petOwner","updatePetOwnerSuccess","setConsultationRenalDetectRecommendation","renalDetectRecommendation","setConsultationRenalDetectNutritionalChoice","renalDetectNutritionalChoice","setConsultationLastConsultation","lastConsultation","createCurrentConsultation","creatingCurrentConsultation","createCurrentConsultationSuccess","currentConsultation","consultation","resetCurrentConsultation","createCurrentConsultationFail","setCreatingCurrentConsultation","setCurrentConsultationVisitDate","currentConsultationVisitDate","setConsultationSetSkipProductBook","skipProductBook","convertConsultationFlow","tool","flow","resetConsultationFlow","coreTool","setExpectedNextVisit","expectedNextVisit","resetExpectedNextVisit","resetConsultationData","placeVetSourceOrderSuccess","vetSourceOrderStatus","placeVetSourceOrderError","consultationFeatureKey","PetOwnerEffects","constructor","actions$","store$","vetService","toaster","updatePetOwner$","createEffect","pipe","ofType","updatePetOwner","switchMap","value","apiUpdatePetOwner","id","petOwner","updatePetOwnerSuccess","catchError","error","of","petOwnerFail","deletePetOwnerAddress$","deletePetOwnerAddress","withLatestFrom","select","selectConsultationPetOwner","apiDeletePetOwnerAddress","res","petOwnerFail$","tap","open","title","$localize","text","type","toggleLoader","ɵɵinject","Actions","Store","VetService","RcToasterService","factory","ɵfac","_PetOwnerEffects","ConsultationCreateEffects","constructor","actions$","store$","dialog","vetService","nutritionService","petService","createConsultation$","createEffect","pipe","ofType","createCurrentConsultation","concatLatestFrom","select","selectConsultationPatient","selectCurrentClinicId","currentBigMeasurementUnit$","selectCurrentClinicCountry","switchMap","consultationData","petInfo","tool","createPatientPopinTitle","owner","isRenewal","patient","clinicId","currentBigMeasurementUnit","country","firstStep","newPet","isNullOrUndefined","updatePetAndCreateConsultation","createPatientAndConsultation","createPatientAndOwnerAndConsultation","updatedPatient","setConsultationPatient","value","createCurrentConsultationSuccess","consultation","putNextVisitAfterCreateConsultationSuccess$","selectExpectedNextVisit","filter","_","nextVisit","updateConsultationNextVisit","expected","visitDateTime","intermediateVisit","weightDate","toISOString","patientId","consultationId","id","putWeightsAfterCreateConsultationSuccess$","selectGrowthChartData","map","data","notSavedPastWeights","length","forEach","weight","rest","addWeightToPet","petId","subscribe","dispatch","deleteCurrentWeightForExistingPetAfterCreateConsultationsuccess$","getPetWeights","pet","weights","sortedWeights","sort","a","b","Date","getTime","body","deletePetWeight","createConsultationFail$","createCurrentConsultationFail","setAlert","alert","message","$localize","alertType","RCAlertType","ERROR","setCreatingCurrentConsultation","getExpectedNextVisit$","getExpectedNextVisit","selectConsultationLastConsultation","selectAllowanceCurrentProgram","currentSystemPreferenceCode$","action","lastConsultation","program","currentSystemPreferenceCode","firstDate","visit","firstVisitDate","planNextVisit","nextDate","nextVisitData","setExpectedNextVisit","updateConsultationNextVisit$","updateConsultationVisits","updateConsultationNextVisitSuccess","resetExpectedNextVisit","catchError","EMPTY","open","CreatePatientPopinComponent","__spreadProps","__spreadValues","DialogHelpers","defaultConfig","panelClass","title","afterClosed","tap","withLatestFrom","values","formatOwnerFormValuesToOwner","createPatient","Helper","petInfoToPet","organizationId","buildConsultationApiBody","newPatient","error","updatePet","breedCode","breed","genderCode","gender","neutered","petActivityCode","petActivity","reproductionStatusCode","reproductionStatus","idealBodyWeight","bcs","measure","IBW","measureUnit","concatMap","createConsultation","addPetWeight","ɵɵinject","Actions","Store","MatDialog","VetService","NutritionService","PetService","factory","ɵfac","_ConsultationCreateEffects","ConsultationVetSourceEffect","constructor","actions$","store$","vetService","toaster","dialog","vetFacade","shareRecommendationFacade","trackingService","checkForExistingOwner$","createEffect","pipe","ofType","checkForExistingOwner","switchMap","email","owner","clinic","currentConsultation","petInfo","placeVetSourceOrder","open","CreatePOPopinComponent","__spreadProps","__spreadValues","DialogHelpers","defaultConfig","data","country","companyAddress","afterClosed","res","createPetOwner","values","map","EMPTY","placeVetSourceOrder$","mergeMap","shareRecommendationTracking","placeVetSourceOrderSuccess","catchError","error","dispatch","placeVetSourceOrderError","placeVetSourceOrderSuccess$","tap","text","translateKey","type","placeVetSourceOrderError$","title","currentLanguage$","language$","trackingCode$","conversionConfiguration$","conversionConfiguration","trackingCode","currentTool$","selectShareRecommendationData$","shareRecommendationData","tool","petOwnerEmail","sendVetsourcesConsultation","petOwnerInfo","createOwner","petOwnerFail","combineLatest","take","language","sendInteraction","shareRecoTracking","ShareRecommendationButtonActionGtm","SEND_ORDER","mapToolToModule","ɵɵinject","Actions","Store","VetService","RcToasterService","MatDialog","VetFacade","ShareRecommendationFacade","GTMService","factory","ɵfac","_ConsultationVetSourceEffect","ConsultationEffects","ConsultationCreateEffects","PetOwnerEffects","ConsultationVetSourceEffect","initialAppState","StateNamesEnum","CORE_STATE_NAME","initialCoreState","VET_STATE_NAME","initialVetState","PATIENT_STATE_NAME","initialPatientState","CONSULTATION_STATE_NAME","initialConsultationState","PRODUCTS_STATE_NAME","initialProductsState","PET_STATE_NAME","initialPetState","SHARE_RECOMMENDATION_STATE_NAME","initialShareRecommendationState","appReducers","router","routerReducer","StateNamesEnum","CORE_STATE_NAME","coreReducer","VET_STATE_NAME","legacyVetReducer","PATIENT_STATE_NAME","patientReducer","CONSULTATION_STATE_NAME","consultationReducer","PRODUCTS_STATE_NAME","productsReducer","PET_STATE_NAME","petReducer","SHARE_RECOMMENDATION_STATE_NAME","shareRecommendationReducer","appEffects","CoreEffects","VetEffects","PatientEffects","ConsultationEffects","ProductsEffects","PetEffects","ShareRecommendationEffects","appFacades","VetFacade","PatientFacade","ProductsFacade","ConsultationFacade","ShareRecommendationFacade","AllowanceFacade","PetFacade","appServices","dailyAllowanceFeatureKey","weightManagementFeatureKey","mufPersonalisedBagFeatureKey","newPetFeatureKey","mufStarterKitFeatureKey","localStorageSyncReducer","reducer","localStorageSync","keys","core","vet","consultationFeatureKey","smartRecoFeatureKey","renalDetectFeatureKey","allowanceFeatureKey","dailyAllowanceFeatureKey","weightManagementFeatureKey","mufPersonalisedBagFeatureKey","mufStarterKitFeatureKey","newPetFeatureKey","products","StateNamesEnum","SHARE_RECOMMENDATION_STATE_NAME","PET_STATE_NAME","rehydrate","metaReducers","AppStoreModule","appFacades","appServices","imports","CommonModule","StoreModule","forRoot","appReducers","EffectsModule","appEffects","StoreRouterConnectingModule","_AppStoreModule","PERFORM_ACTION","REFRESH","RESET","ROLLBACK","COMMIT","SWEEP","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","JUMP_TO_STATE","JUMP_TO_ACTION","IMPORT_STATE","LOCK_CHANGES","PAUSE_RECORDING","PerformAction","action","timestamp","Refresh","Reset","Rollback","Commit","Sweep","ToggleAction","id","JumpToState","index","JUMP_TO_STATE","JumpToAction","actionId","JUMP_TO_ACTION","ImportState","nextLiftedState","IMPORT_STATE","LockChanges","status","LOCK_CHANGES","PauseRecording","PAUSE_RECORDING","STORE_DEVTOOLS_CONFIG","InjectionToken","INITIAL_OPTIONS","noMonitor","DEFAULT_NAME","createConfig","optionsInput","DEFAULT_OPTIONS","options","logOnly","features","config","difference","first","second","item","unliftState","liftedState","computedStates","currentStateIndex","state","liftAction","action","PerformAction","sanitizeActions","actionSanitizer","actions","sanitizedActions","actionIdx","idx","sanitizeAction","__spreadProps","__spreadValues","sanitizeStates","stateSanitizer","states","computedState","sanitizeState","state","stateIdx","shouldFilterActions","config","filterLiftedState","liftedState","predicate","safelist","blocklist","filteredStagedActionIds","filteredActionsById","filteredComputedStates","id","liftedAction","isActionFiltered","blockedlist","predicateMatch","safelistMatch","s","escapeRegExp","blocklistMatch","injectZoneConfig","connectInZone","inject","NgZone","DevtoolsDispatcher","_DevtoolsDispatcher","ActionsSubject","ɵDevtoolsDispatcher_BaseFactory","t","ɵɵgetInheritedFactory","ɵɵdefineInjectable","ExtensionActionTypes","REDUX_DEVTOOLS_EXTENSION","InjectionToken","DevtoolsExtension","_DevtoolsExtension","devtoolsExtension","dispatcher","PERFORM_ACTION","currentState","unliftState","sanitizedState","sanitizedAction","sanitizedLiftedState","Observable","subscriber","connection","change","EMPTY","changes$","share","start$","filter","stop$","liftedActions$","map","concatMap","IMPORT_STATE","UPDATE","timeout","debounceTime","catchError","of","take","actionsUntilStop$","takeUntil","liftedUntilStop$","switchMap","extensionOptions","send","err","ɵɵinject","STORE_DEVTOOLS_CONFIG","INIT_ACTION","INIT","RECOMPUTE","RECOMPUTE_ACTION","computeNextEntry","reducer","error","errorHandler","nextState","nextError","recomputeStates","computedStates","minInvalidatedStateIndex","committedState","actionsById","stagedActionIds","skippedActionIds","isPaused","nextComputedStates","lastIncludedActionId","i","actionId","previousEntry","previousState","previousError","entry","liftInitialState","initialCommittedState","monitorReducer","liftReducerWith","initialLiftedState","options","monitorState","nextActionId","currentStateIndex","isLocked","commitExcessActions","n","excess","idsToDelete","commitChanges","LOCK_CHANGES","PAUSE_RECORDING","RESET","COMMIT","ROLLBACK","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","start","end","active","actionIds","difference","JUMP_TO_STATE","JUMP_TO_ACTION","index","SWEEP","lastState","cmp","StoreDevtools","_StoreDevtools","actions$","reducers$","extension","scannedActions","initialState","liftedInitialState","liftReducer","liftedAction$","merge","skip","observeOn","queueScheduler","liftedReducer$","zoneConfig","liftedStateSubject","ReplaySubject","withLatestFrom","emitInZone","scan","reducedLiftedState","unliftedAction","liftedState$","state$","toSignal","Refresh","Reset","Rollback","Commit","Sweep","ToggleAction","JumpToAction","JumpToState","nextLiftedState","ImportState","status","LockChanges","PauseRecording","ReducerObservable","ScannedActionsSubject","ErrorHandler","INITIAL_STATE","ngZone","source","value","IS_EXTENSION_OR_MONITOR_PRESENT","createIsExtensionOrMonitorPresent","noMonitor","createReduxDevtoolsExtension","extensionKey","provideStoreDevtools","makeEnvironmentProviders","INITIAL_OPTIONS","createConfig","StateObservable","createStateObservable","ReducerManagerDispatcher","devtools","StoreDevtoolsModule","_StoreDevtoolsModule","ɵɵdefineNgModule","ɵɵdefineInjector","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","link_r1","icon","ɵɵsanitizeUrl","href","ɵɵtextInterpolate","name","ctx_r1","IconName","external_link","ɵɵi18n","ɵɵtemplate","BrowserDeprecationComponent_div_0_div_9_Template","ɵɵpropertyInterpolate","svgLinks","atRisk","links","link_r3","BrowserDeprecationComponent_div_1_div_9_Template","BrowserDeprecationComponent","constructor","_router","isIe","Helper","isInternetExplorer","isBrowserDeprecated","ngOnInit","navigate","then","ɵɵdirectiveInject","Router","selectors","decls","vars","consts","i18n_0","$localize","BrowserDeprecationComponent_div_0_Template","BrowserDeprecationComponent_div_1_Template","ctx","_BrowserDeprecationComponent","OktaCallbackComponent","constructor","oktaAuth","router","coreFacade","logger","ngOnInit","__async","toggleLoader","handleLoginRedirect","then","path","oktaOriginalUri","getOriginalUri","localStorageOriginalUrl","localStorage","getItem","URL","pathname","removeItem","navigateByUrl","catch","error","ɵɵdirectiveInject","OKTA_AUTH","Router","CoreFacade","Logger","selectors","decls","vars","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","_OktaCallbackComponent","PetPageComponent","constructor","router","activateRoute","marketService","enumsService","loaderService","trackingService","petCommunicationService","actionCommunicationService","vetService","observablesLayerService","coreFacade","dialog","logger","store$","contentWrapperSizes","ContentWrapperSizes","alertType","RCAlertType","menuOptions","id","link","enabled","short","$localize","long","currentTab","dropdownIsOpen$","BehaviorSubject","selectables","buttonTitle","_destroyed$","Subject","_paginationType","SectionType","ngOnInit","decomposedUrl","url","match","map","e","substring","parent","params","subscribe","patientId","_fetchPatientAndConsultation","_fetchMoreData","petUpdates","pipe","takeUntil","_onPetUpdate","bind","showErrorSubject","message","_handleError","ngOnDestroy","next","complete","resetAlerts","dispatch","resetPet","onDropdownClick","value","onDropdownSelect","$event","dropdownSelectedOption","lastConsultation","tool","Tool","WeightManagement","_dropdownSelectOptions","DataSubscriber","open","ActiveProgramPopinComponent","panelClass","afterClosed","data","stay","start","error","patient$","patientError$","patientLoading$","consultations$","consultationsError$","consultationsLoading$","lastConsultation$","lastConsultationError$","lastConsultationLoading$","nextConsultation$","nextConsultationError$","nextConsultationLoading$","fetchPatientAndConsultations$","_handlePatient","_handleConsultations","_handlePatientAndConsultations","_handleLastConsultation","_handleNextConsultation","_handleErrors","_handleLoading","getConsultationsWithoutVisit","_onPatientFetched","console","mergeMap","consultations","result","patient","setPatient","_onConsultationsFetched","_onLastConsultationFetched","_onNextConsultationFetched","_onPatientError","_onConsultationsError","_onLastConsultationError","_onNextConsultationError","subscribeLatest","_onLoading","_setPatientWeight","consultation","pet","currentDisplayedWeight","visit","weight","__spreadValues","lifestage$","of","speciesCode","breedCode","birth","date","lifestage","lifeStage","_buildDropdownOptions","fetchBreeds","take","breeds","setBreeds","filter","breed","_redirectToPetProfileTab","updateLastConsultation","setMedicalRecord","count","updateNextConsultation","errorString","navigate","AppRoutes","PATIENT","PET_PROFILE","replaceUrl","patientLoading","startLoader","stopLoader","paginationSubject","pageNumber","type","showLoader","Medical","_fetchConsultationByPage","Weight","consultationsByPatient","Constants","LIMIT_CONSULTATIONS_PAGE","setAlert","ERROR","petUpdate","currentPet","updatedPet","Helper","mergeDeep","_updatePatientPet","updatePet","petId","window","scrollTo","__spreadProps","combineLatest","isEnabled$","ClinicFeature","WM","DA","SR","MUF","RD","weightLossPlanEnabled","dailyAllowanceEnabled","productFinderEnabled","mufEnabled","renalDetectEnabled","getWLPAvailabilityError","push","icon","title","disabled","Rationing","SmartReco","getMUFAvailabilityError","Multifunction","getRDAvailabilityError","RenalDetect","optionId","resetConsultationData","resetProductsData","setConsultationPatient","setConsultationLastConsultation","setTool","tool_flow_id","randomId","resetShareRecommendationData","currentBigMeasurementUnit$","tap","currentBigMeasurementUnit","sendInteraction","startConsultationExistingPatientGtm","startWeightManagement","step","WeightManagementStep","FollowUp","startDailyAllowance","withIdentification","startSmartReco","startRenalDetect","startMufPersonalisedBag","warn","ɵɵdirectiveInject","Router","ActivatedRoute","MarketService","EnumsService","LoaderService","GTMService","PetCommunicationService","ActionCommunicationService","VetService","ObservablesLayerService","CoreFacade","MatDialog","Logger","Store","selectors","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵelementEnd","ɵɵelement","ɵɵelementContainerStart","ɵɵproperty","ɵɵadvance","MEDIUM","_PetPageComponent","StandaloneGuard","constructor","router","authService","coreFacade","canActivate","combineLatest","getToken$","loginWithSessionTokenPending$","pipe","filter","_","pending","map","token","navigateByUrl","toggleLoader","ɵɵinject","Router","AuthService","CoreFacade","factory","ɵfac","_StandaloneGuard","SrsInitComponent","constructor","store$","ngOnInit","dispatch","startSmartReco","withIdentification","isNewPet","setTool","tool","Tool","SmartReco","tool_flow_id","Helper","randomId","ɵɵdirectiveInject","Store","selectors","decls","vars","template","rf","ctx","encapsulation","_SrsInitComponent","StandaloneProgressBarComponent","constructor","value","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵstyleProp","_StandaloneProgressBarComponent","ɵɵelementStart","ɵɵlistener","standalonePage_r2","ɵɵrestoreView","_r1","ngIf","ctx_r2","ɵɵnextContext","ɵɵresetView","index","goToStep","ɵɵelementEnd","ɵɵtext","ɵɵelement","ɵɵadvance","ɵɵclassProp","ɵɵtextInterpolate","ɵɵpipeBind1","key","ɵɵtextInterpolate2","SrsPath","SrsNavComponent","constructor","store$","router","location","pages","path","patient","steps","SmartRecoStep","Profile","Weight","Pathologies","recommendation","Recommendation","allowance","Allowance","standalonePage$","events","pipe","filter","e","NavigationEnd","map","getSmartRecoPage","urlAfterRedirects","startWith","progressValue$","combineLatest","select","selectSmartRecoSteps","selectSmartRecoStep","currentStep","indexOf","pageIndex","page","find","s","dispatch","setSmartRecoStep","value","includes","ɵɵdirectiveInject","Store","Router","Location","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","SrsNavComponent_div_2_Template","ɵɵproperty","_SrsNavComponent","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","SrsMainPageComponent","constructor","vetFacade","coreFacade","enumsService","title","localeId","isConfigValid$","isVetValid$","pipe","tap","isVetValid","loadVet","isConfigValid","toggleLoader","filter","switchMap","fetchBreeds","ngOnInit","setTitle","ɵɵdirectiveInject","VetFacade","CoreFacade","EnumsService","Title","LOCALE_ID","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","SrsMainPageComponent_main_0_Template","ɵɵproperty","ɵɵpipeBind1","_SrsMainPageComponent","StandaloneAccessDeniedComponent","selectors","decls","vars","consts","i18n_0","$localize","ɵɵelementStart","ɵɵelement","ɵɵi18n","ɵɵelementEnd","_StandaloneAccessDeniedComponent","routes","path","AppRoutes","CALLBACK","component","OktaCallbackComponent","BROWSER_DEPRECATED","BrowserDeprecationComponent","ACCESS_DENIED","StandaloneAccessDeniedComponent","SrsMainPageComponent","canActivate","StandaloneGuard","runGuardsAndResolvers","children","SrsInitComponent","SMART_RECO","loadChildren","then","m","SmartRecoModule","ALLOWANCE","AllowanceModule","SHARE_RECOMMENDATION","loadComponent","c","ShareRecommendationComponent","redirectTo","AppRoutingModule","imports","RouterModule","forRoot","preloadingStrategy","PreloadAllModules","_AppRoutingModule","ɵɵelementStart","ɵɵlistener","alert_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","close","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","keyTrad","alertType","ɵɵtextInterpolate","message","ɵɵelementContainerStart","_r4","backToTop","ɵɵelement","ɵɵi18n","iconName","chevron_down","ɵɵtextInterpolate1","version","ɵɵpipeBind1","srsTermUrl$","ɵɵsanitizeUrl","AppComponent","constructor","router","scriptService","_elementRef","vetFacade","coreFacade","authService","standaloneService","isIE","Helper","isInternetExplorer","isBrowserDeprecated","IconName","isStandalone","environment","_destroyed$","Subject","showLoader$","pipe","observeOn","asyncScheduler","takeUntil","showProgressBar$","loaderTransparent$","alerts$","distinctUntilChanged","prev","curr","length","showFooter$","clinic$","map","clinic","Constants","COUNTRIES_WITH_FOOTER","some","country","companyAddress","currentClinicCountry$","filter","toLowerCase","saveInvitation","params","id","invitation","email","clinicId","clinic_id","setInvitation","saveStandaloneInfo","srs","data","saveInternalRedirectInfo","startFlow","sessionStorage","setItem","INTERNAL_REDIRECT_KEY","useAutoLogin","token","redirectToLogin","toggleLoader","loginWithSessionToken","login","ngOnInit","navigate","AppRoutes","BROWSER_DEPRECATED","then","_removeAngularVersion","_scrollToTop","initDocumentLang","handleInitialQueryParams","loadLocalization","ngAfterContentInit","loadOneTrustScript","loadMarsFooter","LocalizationService","isPhraseSdkEnabled","loadPhraseAppEditor","envName","Env","STG","loadZESnippet","ngOnDestroy","next","complete","window","scrollTo","top","behavior","alert","removeAlert","events","e","ChildActivationStart","take","snapshot","queryParams","tap","subscribe","nativeElement","removeAttribute","evt","NavigationEnd","ɵɵdirectiveInject","Router","ScriptService","ElementRef","VetFacade","CoreFacade","AuthService","StandaloneService","selectors","decls","vars","consts","i18n_0","$localize","ɵɵtemplate","AppComponent_div_6_Template","AppComponent_rc_footer_10_Template","AppComponent_div_12_Template","AppComponent_a_13_Template","ctx","slice","reverse","_AppComponent","isSameUTCWeek","dirtyDateLeft","dirtyDateRight","options","requiredArgs","dateLeftStartOfWeek","startOfUTCWeek","dateRightStartOfWeek","formatDistanceLocale","formatDistance","token","count","options","pluralResult","tokenValue","suffixExist","comparison","timeResult","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","accusativeWeekdays","formatRelativeLocale","date","day","formatRelative","token","format","formatRelative_default","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","cs_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","da_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","de_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","date","formatRelative","token","format","formatRelative_default","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","dayPeriodValues","ordinalNumber","dirtyNumber","options","number","unit","suffix","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","el_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","en_AU_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","en_CA_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","en_GB_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelativeLocalePlural","formatRelative","token","date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","es_default","formatDistanceLocale","formatDistance","token","count","options","usageGroup","result","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","et_default","futureSeconds","text","futureMinutes","futureHours","futureDays","futureWeeks","futureMonths","futureYears","formatDistanceLocale","_text","formatDistance","token","count","options","tokenValue","result","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","formattingDayValues","dayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","fi_default","formatDistanceLocale","formatDistance","token","count","options","result","form","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","dirtyNumber","options","number","unit","feminineUnits","suffix","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","fr_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","fr_CA_default","translations","withoutSuffixes","withSuffixes","formatDistance","token","count","options","adverb","unit","addSuffix","key","comparison","translated","result","adv","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","accusativeWeekdays","week","isFuture","date","weekday","prefix","formatRelativeLocale","formatRelative","token","format","formatRelative_default","eraValues","quarterValues","formattingQuarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","hu_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","weekdays","_lastWeek","day","thisWeek","_nextWeek","formatRelativeLocale","date","baseDate","options","isSameUTCWeek","formatRelative","token","format","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","it_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","options","number","unit","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","ko_default","translations","translateSeconds","_number","addSuffix","_key","isFuture","translateSingular","key","forms","translate","number","result","special","formatDistanceLocale","formatDistance","token","count","options","adverb","unit","tokenValue","_key2","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","formattingQuarterValues","monthValues","formattingMonthValues","dayValues","formattingDayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","lt_default","buildLocalizeTokenFn","schema","count","options","rem","formatDistanceLocale","_count","formatDistance","token","result","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","weekdays","formatRelativeLocale","date","baseDate","options","isSameUTCWeek","weekday","formatRelative","token","format","formatRelative_default","eraValues","quarterValues","formattingQuarterValues","monthValues","formattingMonthValues","dayValues","formattingDayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","lv_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","nb_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","nl_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","nl_BE_default","formatDistanceLocale","declensionGroup","scheme","count","rem100","rem10","declension","time","group","finalText","formatDistance","token","options","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","adjectivesLastWeek","adjectivesThisWeek","adjectivesNextWeek","dayGrammaticalGender","dayAndTimeWithAdjective","token","date","baseDate","options","adjectives","isSameUTCWeek","day","grammaticalGender","adjective","formatRelativeLocale","formatRelative","format","formatRelative_default","eraValues","quarterValues","monthValues","monthFormattingValues","dayValues","dayFormattingValues","dayPeriodValues","dayPeriodFormattingValues","ordinalNumber","dirtyNumber","_options","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","pl_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","date","weekday","last","formatRelative","token","_baseDate","_options","format","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","pt_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","ro_default","declension","scheme","count","rem10","rem100","buildLocalizeTokenFn","options","formatDistanceLocale","_count","formatDistance","token","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","accusativeWeekdays","_lastWeek","day","weekday","thisWeek","_nextWeek","formatRelativeLocale","date","baseDate","options","isSameUTCWeek","formatRelative","token","format","formatRelative_default","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","options","number","unit","suffix","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","ru_default","declensionGroup","scheme","count","declension","time","group","finalText","extractPreposition","token","result","preposition","prefixPreposition","translation","suffixPreposition","lowercaseFirstLetter","string","formatDistanceLocale","formatDistance","options","key","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","accusativeWeekdays","_lastWeek","day","weekday","thisWeek","_nextWeek","formatRelativeLocale","date","baseDate","options","isSameUTCWeek","formatRelative","token","format","formatRelative_default","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","sk_default","formatDistanceLocale","wordMapping","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","rem100","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","sv_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","tr_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","checkWeek","date","baseDate","options","baseFormat","isSameUTCWeek","formatRelativeLocale","formatRelative","token","format","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","zh_CN_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","zh_HK_default","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","formatDistance_default","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong_default","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","formatRelative_default","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","options","number","localize","buildLocalizeFn","quarter","localize_default","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","match_default","locale","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","zh_TW_default","getOktaConfig","isIE","navigator","userAgent","indexOf","appVersion","__spreadProps","__spreadValues","environment","oktaConfig","pkce","locales","zh","zhHK","zhTW","cs","da","nlBE","nl","enAU","enGB","enCA","enUS","et","fi","fr","frCA","frBE","de","el","hu","it","ko","lv","lt","nb","pl","pt","ro","ru","sk","esAR","es","esMX","sv","tr","oktaAuth","OktaAuth","AppModule","bootstrap","AppComponent","ArianeTranslationPipe","provide","OKTA_CONFIG","useValue","LOCALE_ID","LocalizationService","initLanguage","ErrorHandler","useClass","ErrorHandlerService","MAT_DATE_LOCALE","split","join","imports","BrowserModule","BrowserAnimationsModule","AppRoutingModule","CoreModule","AppStoreModule","StoreDevtoolsModule","instrument","maxAge","logOnly","production","connectInZone","OktaAuthModule","SharedModule","LoaderModule","_AppModule","BLOCK_MARKER$1","MEANING_SEPARATOR","ID_SEPARATOR","LEGACY_ID_INDICATOR","textEncoder","fingerprint","str","textEncoder","utf8","view","hi","hash32","lo","computeMsgId","msg","meaning","msgFingerprint","length","c","a","b","index","end","res","mix","remainder","parseMessage","messageParts","expressions","location","messagePartLocations","expressionLocations","substitutions","substitutionLocations","associatedMessageIds","metadata","parseMetadata","cleanedMessageParts","placeholderNames","messageString","i","messagePart","placeholderName","computePlaceholderName","associatedMessageId","parsePlaceholder","messageId","computeMsgId","legacyIds","id","cooked","raw","block","splitBlock","meaningDescAndId","LEGACY_ID_INDICATOR","meaningAndDesc","customId","ID_SEPARATOR","meaning","description","MEANING_SEPARATOR","BLOCK_MARKER$1","endOfBlock","findEndOfBlock","index","cookedIndex","rawIndex","MissingTranslationError","parsedMessage","describeMessage","translate$1","translations","messageParts","substitutions","message","parseMessage","translation","MissingTranslationError","placeholder","describeMessage","parseTranslation","messageString","parts","placeholderNames","rawMessageParts","part","BLOCK_MARKER$1","makeTemplateObject","makeTemplateObject","cooked","raw","describeMessage","message","meaningString","legacy","l","loadTranslations","translations","translate","key","parseTranslation","translate","messageParts","substitutions","translate$1","e","phraseAccessToken","phraseProjectId","generateTranslations","textTranslations","translations","JSON","parse","key","value","Object","entries","LocalizationService","isPhraseSdkEnabled","demoTranslations","keys","loadLocale","localeId","Promise","resolve","reject","xhr","XMLHttpRequest","handleError","message","Error","onload","responseText","e","onerror","ontimeout","onabort","onreadystatechange","status","url","phraseProjectId","phraseAccessToken","open","send","getPhraseLocaleId","languageCode","AVAILABLE_LANGUAGES","find","l","code","phraseId","getLocalizationData","__async","locale","LocalizationService","initLanguage","phraseId","getPhraseLocaleId","translations","loadLocale","global","performance","mark","name","performanceMeasure","label","symbolPrefix","__symbol__","checkDuplicate","Zone","_Zone","patches","zone","_currentZoneFrame","_currentTask","fn","ignoreDuplicate","perfName","_api","parent","zoneSpec","_ZoneDelegate","key","current","callback","source","_callback","applyThis","applyArgs","error","task","NO_ZONE","notScheduled","eventTask","macroTask","reEntryGuard","running","scheduled","previousTask","unknown","newZone","scheduling","zoneDelegates","err","data","customSchedule","ZoneTask","microTask","customCancel","canceling","count","i","DELEGATE_ZS","delegate","_","target","hasTaskState","parentDelegate","zoneSpecHasTask","parentHasTask","targetZone","returnTask","scheduleMicroTask","value","isEmpty","type","counts","prev","next","options","scheduleFn","cancelFn","self","args","_numberOfNestedTaskFrames","drainMicroTaskQueue","toState","fromState1","fromState2","symbolSetTimeout","symbolPromise","symbolThen","_microTaskQueue","_isDrainingMicrotaskQueue","nativeMicroTaskQueuePromise","nativeScheduleMicroTask","func","nativeThen","queue","noop","ObjectGetOwnPropertyDescriptor","ObjectDefineProperty","ObjectGetPrototypeOf","ObjectCreate","ArraySlice","ADD_EVENT_LISTENER_STR","REMOVE_EVENT_LISTENER_STR","ZONE_SYMBOL_ADD_EVENT_LISTENER","ZONE_SYMBOL_REMOVE_EVENT_LISTENER","TRUE_STR","FALSE_STR","ZONE_SYMBOL_PREFIX","wrapWithCurrentZone","scheduleMacroTaskWithCurrentZone","zoneSymbol","isWindowExists","internalWindow","_global","REMOVE_ATTRIBUTE","bindArguments","patchPrototype","prototype","fnNames","prototypeDesc","isPropertyWritable","patched","attachOriginToPatched","propertyDesc","isWebWorker","isNode","isBrowser","isMix","zoneSymbolEventNames$1","wrapFn","event","eventNameSymbol","listener","result","errorEvent","patchProperty","obj","prop","desc","onPropPatchedSymbol","originalDescGet","originalDescSet","eventName","newValue","patchOnProperties","properties","onProperties","j","originalInstanceKey","patchClass","className","OriginalClass","a","instance","patchMethod","patchFn","proto","delegateName","patchDelegate","patchMacroTask","funcName","metaCreator","setNative","scheduleTask","meta","original","isDetectedIEOrEdge","ieOrEdge","isIE","ua","isIEOrEdge","api","readableObjectToString","_uncaughtPromiseErrors","isDisableWrappingUncaughtPromiseRejection","creationTrace","e","rejection","uncaughtPromiseError","handleUnhandledRejection","UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL","handler","isThenable","forwardResolution","forwardRejection","ZoneAwarePromise","symbolState","symbolValue","symbolFinally","symbolParentPromiseValue","symbolParentPromiseState","UNRESOLVED","RESOLVED","REJECTED","REJECTED_NO_CATCH","makeResolver","promise","state","v","resolvePromise","once","wasCalled","wrappedFunction","TYPE_ERROR","CURRENT_TASK_TRACE_SYMBOL","onceWrapper","then","clearRejectedNoCatch","trace","scheduleResolveOrReject","REJECTION_HANDLED_HANDLER","chainPromise","onFulfilled","onRejected","promiseState","parentPromiseValue","isFinallyPromise","ZONE_AWARE_PROMISE_TO_STRING","AggregateError","res","rej","values","promises","finished","errors","resolve","reject","onResolve","onReject","unresolvedCount","valueIndex","resolvedValues","curValueIndex","thenErr","executor","C","onFinally","NativePromise","symbolThenPatched","patchThen","Ctor","originalThen","zoneify","resultPromise","ctor","originalFunctionToString","ORIGINAL_DELEGATE_SYMBOL","PROMISE_SYMBOL","ERROR_SYMBOL","newFunctionToString","originalDelegate","nativePromise","nativeError","originalObjectToString","PROMISE_OBJECT_TO_STRING","passiveSupported","OPTIMIZED_ZONE_EVENT_TASK_DATA","zoneSymbolEventNames","globalSources","EVENT_NAME_SYMBOL_REGX","IMMEDIATE_PROPAGATION_SYMBOL","prepareEventNames","eventNameToString","falseEventName","trueEventName","symbol","symbolCapture","patchEventTarget","apis","patchOptions","ADD_EVENT_LISTENER","REMOVE_EVENT_LISTENER","LISTENERS_EVENT_LISTENER","REMOVE_ALL_LISTENERS_EVENT_LISTENER","zoneSymbolAddEventListener","ADD_EVENT_LISTENER_SOURCE","PREPEND_EVENT_LISTENER","PREPEND_EVENT_LISTENER_SOURCE","invokeTask","globalCallback","context","isCapture","tasks","copyTasks","globalZoneAwareCallback","globalZoneAwareCaptureCallback","patchEventTargetMethods","useGlobalCallback","validateHandler","returnTarget","taskData","nativeAddEventListener","nativeRemoveEventListener","nativeListeners","nativeRemoveAllListeners","nativePrependEventListener","buildEventListenerOptions","passive","__spreadProps","__spreadValues","customScheduleGlobal","customCancelGlobal","symbolEventNames","symbolEventName","existingTasks","customScheduleNonGlobal","customSchedulePrepend","customCancelNonGlobal","compareTaskCallbackVsDelegate","typeOfDelegate","compare","unpatchedEvents","passiveEvents","makeAddListener","nativeListener","addSource","customScheduleFn","customCancelFn","prepend","isHandleEvent","signal","capture","isExisting","constructorName","targetSource","existingTask","onPropertySymbol","listeners","findEventTasks","symbolCaptureEventName","captureTasks","removeTasks","keys","match","evtName","results","foundTasks","captureFalseTasks","captureTrueTasks","patchEventPrototype","Event","patchCallbacks","targetName","method","callbacks","nativeDelegate","opts","descriptor","filterProperties","ignoreProperties","tip","ip","targetIgnoreProperties","op","patchFilteredProperties","filteredProperties","getOnEventNames","propertyDescriptorPatch","patchTargets","ignoreErrorProperties","eventNames","SYMBOL_BLACK_LISTED_EVENTS","SYMBOL_UNPATCHED_EVENTS","patchQueueMicrotask","taskSymbol","patchTimer","window","setName","cancelName","nameSuffix","clearNative","tasksByHandleId","clearTask","handle","id","patchCustomElements","eventTargetPatch","EVENT_TARGET","patchEvent","legacyPatch","set","clear","blockingMethods","s","XMLHttpRequestEventTarget","patchXHR","XHR_TASK","XHR_SYNC","XHR_LISTENER","XHR_SCHEDULED","XHR_URL","XHR_ERROR_BEFORE_SCHEDULED","XMLHttpRequest","XMLHttpRequestPrototype","findPendingTask","oriAddListener","oriRemoveListener","XMLHttpRequestEventTargetPrototype","READY_STATE_CHANGE","SCHEDULED","newListener","loadTasks","oriInvoke","sendNative","placeholderCallback","abortNative","openNative","XMLHTTPREQUEST_SOURCE","fetchTaskAborting","fetchTaskScheduling","findPromiseRejectionHandler","PromiseRejectionEvent","evt","environment","production","enableProdMode","getLocalizationData","then","data","TranslateHelper","saveTranslation","loadTranslations","translations","saveTranslationBackup","catch","e","getTranslationBackup","console","error","finally","platformBrowser","bootstrapModule","AppModule","err"],"x_google_ignoreList":[0,1,2,7,22,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,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,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,208,210]}