{"version":3,"file":"js/634.js","mappings":"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","sources":["webpack://nocodenodeweb/./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack://nocodenodeweb/./node_modules/stylis/src/Utility.js","webpack://nocodenodeweb/./node_modules/stylis/src/Tokenizer.js","webpack://nocodenodeweb/./node_modules/stylis/src/Enum.js","webpack://nocodenodeweb/./node_modules/stylis/src/Serializer.js","webpack://nocodenodeweb/./node_modules/stylis/src/Parser.js","webpack://nocodenodeweb/./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack://nocodenodeweb/./node_modules/stylis/src/Middleware.js","webpack://nocodenodeweb/./node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js","webpack://nocodenodeweb/./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack://nocodenodeweb/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack://nocodenodeweb/./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack://nocodenodeweb/./node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack://nocodenodeweb/./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","webpack://nocodenodeweb/./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack://nocodenodeweb/./node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/pp-react-grid/dist/@paypalcorp/pp-react-grid.esm.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/pp-react-links/dist/@paypalcorp/pp-react-links.esm.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/pp-react-list/dist/@paypalcorp/pp-react-list.esm.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/pp-react-theme/dist/@paypalcorp/pp-react-theme.esm.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-display-names/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-phone/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-example-generator/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-date/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/pp-react-worldready/dist/@paypalcorp/pp-react-worldready.esm.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-name/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-address/browser.js","webpack://nocodenodeweb/./node_modules/is-plain-object/dist/is-plain-object.mjs","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-core/node_modules/lru-cache/index.mjs","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-core/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-core/globalize-overrides/date.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-core/globalize-overrides/relative-time.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-core/globalize-overrides/unit.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-currency/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-message/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-number/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-react/browser.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-react/node_modules/react/cjs/react.production.min.js","webpack://nocodenodeweb/./node_modules/@paypalcorp/worldready-react/node_modules/react/index.js","webpack://nocodenodeweb/./node_modules/@remix-run/router/history.ts","webpack://nocodenodeweb/./node_modules/@remix-run/router/utils.ts","webpack://nocodenodeweb/./node_modules/@remix-run/router/router.ts","webpack://nocodenodeweb/./node_modules/beaver-logger/dist/beaver-logger.js","webpack://nocodenodeweb/./node_modules/cldrjs/dist/cldr.js","webpack://nocodenodeweb/./node_modules/cldrjs/dist/cldr/event.js","webpack://nocodenodeweb/./node_modules/cldrjs/dist/cldr/supplemental.js","webpack://nocodenodeweb/./node_modules/cldrjs/dist/cldr/unresolved.js","webpack://nocodenodeweb/./node_modules/cldrjs/dist/node_main.js","webpack://nocodenodeweb/./node_modules/core-js/internals/a-function.js","webpack://nocodenodeweb/./node_modules/core-js/internals/a-possible-prototype.js","webpack://nocodenodeweb/./node_modules/core-js/internals/add-to-unscopables.js","webpack://nocodenodeweb/./node_modules/core-js/internals/advance-string-index.js","webpack://nocodenodeweb/./node_modules/core-js/internals/an-instance.js","webpack://nocodenodeweb/./node_modules/core-js/internals/an-object.js","webpack://nocodenodeweb/./node_modules/core-js/internals/array-for-each.js","webpack://nocodenodeweb/./node_modules/core-js/internals/array-from.js","webpack://nocodenodeweb/./node_modules/core-js/internals/array-includes.js","webpack://nocodenodeweb/./node_modules/core-js/internals/array-iteration.js","webpack://nocodenodeweb/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://nocodenodeweb/./node_modules/core-js/internals/array-method-is-strict.js","webpack://nocodenodeweb/./node_modules/core-js/internals/array-species-constructor.js","webpack://nocodenodeweb/./node_modules/core-js/internals/array-species-create.js","webpack://nocodenodeweb/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://nocodenodeweb/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://nocodenodeweb/./node_modules/core-js/internals/classof-raw.js","webpack://nocodenodeweb/./node_modules/core-js/internals/classof.js","webpack://nocodenodeweb/./node_modules/core-js/internals/collection-strong.js","webpack://nocodenodeweb/./node_modules/core-js/internals/collection.js","webpack://nocodenodeweb/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://nocodenodeweb/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://nocodenodeweb/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://nocodenodeweb/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://nocodenodeweb/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://nocodenodeweb/./node_modules/core-js/internals/create-property-descriptor.js","webpack://nocodenodeweb/./node_modules/core-js/internals/create-property.js","webpack://nocodenodeweb/./node_modules/core-js/internals/date-to-primitive.js","webpack://nocodenodeweb/./node_modules/core-js/internals/define-iterator.js","webpack://nocodenodeweb/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://nocodenodeweb/./node_modules/core-js/internals/descriptors.js","webpack://nocodenodeweb/./node_modules/core-js/internals/document-create-element.js","webpack://nocodenodeweb/./node_modules/core-js/internals/dom-iterables.js","webpack://nocodenodeweb/./node_modules/core-js/internals/engine-user-agent.js","webpack://nocodenodeweb/./node_modules/core-js/internals/engine-v8-version.js","webpack://nocodenodeweb/./node_modules/core-js/internals/enum-bug-keys.js","webpack://nocodenodeweb/./node_modules/core-js/internals/export.js","webpack://nocodenodeweb/./node_modules/core-js/internals/fails.js","webpack://nocodenodeweb/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://nocodenodeweb/./node_modules/core-js/internals/freezing.js","webpack://nocodenodeweb/./node_modules/core-js/internals/function-bind-context.js","webpack://nocodenodeweb/./node_modules/core-js/internals/get-built-in.js","webpack://nocodenodeweb/./node_modules/core-js/internals/get-iterator-method.js","webpack://nocodenodeweb/./node_modules/core-js/internals/get-iterator.js","webpack://nocodenodeweb/./node_modules/core-js/internals/get-substitution.js","webpack://nocodenodeweb/./node_modules/core-js/internals/global.js","webpack://nocodenodeweb/./node_modules/core-js/internals/has.js","webpack://nocodenodeweb/./node_modules/core-js/internals/hidden-keys.js","webpack://nocodenodeweb/./node_modules/core-js/internals/html.js","webpack://nocodenodeweb/./node_modules/core-js/internals/ie8-dom-define.js","webpack://nocodenodeweb/./node_modules/core-js/internals/indexed-object.js","webpack://nocodenodeweb/./node_modules/core-js/internals/inherit-if-required.js","webpack://nocodenodeweb/./node_modules/core-js/internals/inspect-source.js","webpack://nocodenodeweb/./node_modules/core-js/internals/internal-metadata.js","webpack://nocodenodeweb/./node_modules/core-js/internals/internal-state.js","webpack://nocodenodeweb/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://nocodenodeweb/./node_modules/core-js/internals/is-array.js","webpack://nocodenodeweb/./node_modules/core-js/internals/is-forced.js","webpack://nocodenodeweb/./node_modules/core-js/internals/is-object.js","webpack://nocodenodeweb/./node_modules/core-js/internals/is-pure.js","webpack://nocodenodeweb/./node_modules/core-js/internals/is-regexp.js","webpack://nocodenodeweb/./node_modules/core-js/internals/is-symbol.js","webpack://nocodenodeweb/./node_modules/core-js/internals/iterate.js","webpack://nocodenodeweb/./node_modules/core-js/internals/iterator-close.js","webpack://nocodenodeweb/./node_modules/core-js/internals/iterators-core.js","webpack://nocodenodeweb/./node_modules/core-js/internals/iterators.js","webpack://nocodenodeweb/./node_modules/core-js/internals/native-symbol.js","webpack://nocodenodeweb/./node_modules/core-js/internals/native-weak-map.js","webpack://nocodenodeweb/./node_modules/core-js/internals/not-a-regexp.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-assign.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-create.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-define-properties.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-define-property.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-keys-internal.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-keys.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-to-array.js","webpack://nocodenodeweb/./node_modules/core-js/internals/object-to-string.js","webpack://nocodenodeweb/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://nocodenodeweb/./node_modules/core-js/internals/own-keys.js","webpack://nocodenodeweb/./node_modules/core-js/internals/path.js","webpack://nocodenodeweb/./node_modules/core-js/internals/redefine-all.js","webpack://nocodenodeweb/./node_modules/core-js/internals/redefine.js","webpack://nocodenodeweb/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://nocodenodeweb/./node_modules/core-js/internals/regexp-exec.js","webpack://nocodenodeweb/./node_modules/core-js/internals/regexp-flags.js","webpack://nocodenodeweb/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://nocodenodeweb/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://nocodenodeweb/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://nocodenodeweb/./node_modules/core-js/internals/require-object-coercible.js","webpack://nocodenodeweb/./node_modules/core-js/internals/set-global.js","webpack://nocodenodeweb/./node_modules/core-js/internals/set-species.js","webpack://nocodenodeweb/./node_modules/core-js/internals/set-to-string-tag.js","webpack://nocodenodeweb/./node_modules/core-js/internals/shared-key.js","webpack://nocodenodeweb/./node_modules/core-js/internals/shared-store.js","webpack://nocodenodeweb/./node_modules/core-js/internals/shared.js","webpack://nocodenodeweb/./node_modules/core-js/internals/species-constructor.js","webpack://nocodenodeweb/./node_modules/core-js/internals/string-multibyte.js","webpack://nocodenodeweb/./node_modules/core-js/internals/string-trim-forced.js","webpack://nocodenodeweb/./node_modules/core-js/internals/string-trim.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-absolute-index.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-indexed-object.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-integer.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-length.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-object.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-primitive.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-property-key.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-string-tag-support.js","webpack://nocodenodeweb/./node_modules/core-js/internals/to-string.js","webpack://nocodenodeweb/./node_modules/core-js/internals/uid.js","webpack://nocodenodeweb/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://nocodenodeweb/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://nocodenodeweb/./node_modules/core-js/internals/well-known-symbol.js","webpack://nocodenodeweb/./node_modules/core-js/internals/whitespaces.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.concat.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.filter.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.find-index.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.find.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.from.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.includes.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.iterator.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.join.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.map.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.slice.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.array.splice.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.date.to-primitive.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.function.name.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.number.constructor.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.object.assign.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.object.entries.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.object.keys.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.object.to-string.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.object.values.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.regexp.exec.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.regexp.flags.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.set.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.string.includes.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.string.iterator.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.string.match.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.string.replace.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.string.split.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.string.trim.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.symbol.description.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.symbol.js","webpack://nocodenodeweb/./node_modules/core-js/modules/es.symbol.to-primitive.js","webpack://nocodenodeweb/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://nocodenodeweb/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://nocodenodeweb/./node_modules/fullstack-phone/client/index.js","webpack://nocodenodeweb/./node_modules/globalize/dist/globalize.js","webpack://nocodenodeweb/./node_modules/globalize/dist/globalize/currency.js","webpack://nocodenodeweb/./node_modules/globalize/dist/globalize/date.js","webpack://nocodenodeweb/./node_modules/globalize/dist/globalize/message.js","webpack://nocodenodeweb/./node_modules/globalize/dist/globalize/number.js","webpack://nocodenodeweb/./node_modules/globalize/dist/globalize/plural.js","webpack://nocodenodeweb/./node_modules/globalize/dist/globalize/relative-time.js","webpack://nocodenodeweb/./node_modules/globalize/dist/globalize/unit.js","webpack://nocodenodeweb/./node_modules/globalize/dist/node-main.js","webpack://nocodenodeweb/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://nocodenodeweb/./node_modules/object-assign/index.js","webpack://nocodenodeweb/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://nocodenodeweb/./node_modules/react-is/cjs/react-is.production.min.js","webpack://nocodenodeweb/./node_modules/react-is/index.js","webpack://nocodenodeweb/./node_modules/react-router-dom/dom.ts","webpack://nocodenodeweb/./node_modules/react-router-dom/index.tsx","webpack://nocodenodeweb/./node_modules/react-router/lib/context.ts","webpack://nocodenodeweb/./node_modules/react-router/lib/hooks.tsx","webpack://nocodenodeweb/./node_modules/react-router/lib/components.tsx","webpack://nocodenodeweb/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://nocodenodeweb/./node_modules/react/cjs/react.production.min.js","webpack://nocodenodeweb/./node_modules/react/jsx-runtime.js","webpack://nocodenodeweb/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://nocodenodeweb/./node_modules/scheduler/index.js","webpack://nocodenodeweb/./node_modules/yaassertion/src/index.js","webpack://nocodenodeweb/./node_modules/yaassertion/src/utils.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/typeof.js","webpack://nocodenodeweb/./node_modules/make-plural/cardinals.mjs","webpack://nocodenodeweb/./node_modules/make-plural/plurals.mjs","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://nocodenodeweb/./node_modules/@babel/runtime/helpers/esm/construct.js"],"sourcesContent":["/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import * as ReactJSXRuntime from 'react/jsx-runtime';\nimport { h as hasOwn, E as Emotion, c as createEmotionProps } from '../../dist/emotion-element-43c6fea0.browser.esm.js';\nimport 'react';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar Fragment = ReactJSXRuntime.Fragment;\nfunction jsx(type, props, key) {\n if (!hasOwn.call(props, 'css')) {\n return ReactJSXRuntime.jsx(type, props, key);\n }\n\n return ReactJSXRuntime.jsx(Emotion, createEmotionProps(type, props), key);\n}\nfunction jsxs(type, props, key) {\n if (!hasOwn.call(props, 'css')) {\n return ReactJSXRuntime.jsxs(type, props, key);\n }\n\n return ReactJSXRuntime.jsxs(Emotion, createEmotionProps(type, props), key);\n}\n\nexport { Fragment, jsx, jsxs };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","var weakMemoize = function weakMemoize(func) {\n // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // $FlowFixMe\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport { weakMemoize as default };\n","import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport { devWarning } from '@paypalcorp/pp-react-utils';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo } from 'react';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36, _templateObject37, _templateObject38, _templateObject39, _templateObject40, _templateObject41, _templateObject42, _templateObject43, _templateObject44, _templateObject45, _templateObject46, _templateObject47, _templateObject48, _templateObject49, _templateObject50, _templateObject51, _templateObject52;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n devWarning('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceXl = tokens.sysSpaceXl,\n sysSpaceJumbo = tokens.sysSpaceJumbo,\n sysSizeMediaSm = tokens.sysSizeMediaSm,\n sysSizeMediaMd = tokens.sysSizeMediaMd,\n sysSizeMediaLg = tokens.sysSizeMediaLg,\n sysSizeMediaXl = tokens.sysSizeMediaXl,\n sysSizeMediaXxl = tokens.sysSizeMediaXxl;\n var vxContainerPaddingMD = '2.25rem';\n var sysSpaceXl4 = '3rem';\n var breakpointMap = {\n sm: sysSizeMediaSm,\n md: sysSizeMediaMd,\n lg: sysSizeMediaLg,\n xl: sysSizeMediaXl,\n xxl: sysSizeMediaXxl\n };\n var commonColumn = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n position: relative;\\n width: 100%;\\n min-height: 1px;\\n padding-right: \", \";\\n padding-left: \", \";\\n \"])), sysSpaceMd, sysSpaceMd);\n\n var commonColumnForm = function () {\n return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n padding-top: \", \";\\n padding-bottom: \", \";\\n \"])), sysSpaceSm, sysSpaceSm);\n };\n\n var colGridCalculator = function (n, breakpoint) {\n var space = n / 12 * 100;\n var labelStr = \"col\".concat(breakpoint ? '_' + breakpoint : '', \"_\").concat(n);\n return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: \", \";\\n -ms-flex: 0 0 \", \"%;\\n flex: 0 0 \", \"%;\\n max-width: \", \"%;\\n \"])), labelStr, space, space, space);\n };\n /* istanbul ignore next */\n\n\n var colGridBreakpoint = function (n) {\n var breakpoint = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'sm';\n return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n \", \";\\n @media (min-width: \", \") {\\n \", \"\\n }\\n \"])), commonColumn, breakpointMap[breakpoint], colGridCalculator(n, breakpoint));\n };\n /* istanbul ignore next */\n\n\n var order = function (num, breakpoint) {\n var labelStr = \"order\".concat(breakpoint ? '_' + breakpoint : '', \"_\").concat(num);\n return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: \", \";\\n -ms-flex-order: \", \";\\n order: \", \";\\n \"])), labelStr, num, num);\n };\n /* istanbul ignore next */\n\n\n var orderBreakpoint = function (n) {\n var breakpoint = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'sm';\n return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n @media (min-width: \", \") {\\n \", \"\\n }\\n \"])), breakpointMap[breakpoint], order(n, breakpoint));\n };\n\n var offset = function (num, breakpoint) {\n var labelStr = \"offset\".concat(breakpoint ? '_' + breakpoint : '', \"_\").concat(num);\n return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: \", \";\\n margin-inline-start: \", \"%;\\n \"])), labelStr, num / 12 * 100);\n };\n /* istanbul ignore next */\n\n\n var offsetBreakpoint = function (n) {\n var breakpoint = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'sm';\n return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n @media (min-width: \", \") {\\n \", \";\\n }\\n \"])), breakpointMap[breakpoint], offset(n, breakpoint));\n };\n /* istanbul ignore next */\n\n\n /* istanbul ignore next */\n var dynamicCol = function (breakpoint, n) {\n if (breakpoint && n) {\n return colGridBreakpoint(n, breakpoint);\n } else if (n && (breakpoint === undefined || breakpoint === '')) {\n return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n \", \";\\n \", \"\\n \"])), commonColumn, colGridCalculator(n));\n }\n\n return '';\n };\n /* istanbul ignore next */\n\n\n var display = function (_display, breakpoint) {\n var labelStr = \"display\".concat(breakpoint ? '_' + breakpoint : '', \"_\").concat(_display);\n return css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: \", \";\\n display: \", \";\\n \"])), labelStr, _display);\n };\n\n var displayBreakpoint = function (breakpoint, _display) {\n return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n @media (min-width: \", \") {\\n \", \"\\n }\\n \"])), breakpointMap[breakpoint], display(_display, breakpoint));\n };\n\n var container = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n label: grid_container;\\n width: 100%;\\n padding-right: \", \";\\n padding-left: \", \";\\n margin-right: auto;\\n margin-left: auto;\\n\\n @media (min-width: \", \") {\\n padding-right: \", \";\\n padding-left: \", \";\\n max-width: \", \";\\n }\\n\\n @media (min-width: \", \") {\\n padding-right: \", \";\\n padding-left: \", \";\\n max-width: \", \";\\n }\\n\\n @media (min-width: \", \") {\\n padding-right: \", \";\\n padding-left: \", \";\\n max-width: \", \";\\n }\\n\\n @media (min-width: \", \") {\\n padding-right: \", \";\\n padding-left: \", \";\\n max-width: \", \";\\n }\\n \"])), sysSpaceMd, sysSpaceMd, sysSizeMediaSm, sysSpaceXl, sysSpaceXl, sysSizeMediaSm, sysSizeMediaMd, vxContainerPaddingMD, vxContainerPaddingMD, sysSizeMediaMd, sysSizeMediaLg, vxContainerPaddingMD, vxContainerPaddingMD, sysSizeMediaLg, sysSizeMediaXl, vxContainerPaddingMD, vxContainerPaddingMD, sysSizeMediaXl);\n var layoutContainer = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: layout_container;\\n width: 100%;\\n padding-right: \", \";\\n padding-left: \", \";\\n margin-right: auto;\\n margin-left: auto;\\n max-width: \", \";\\n\\n @media (min-width: \", \") {\\n padding-right: \", \";\\n padding-left: \", \";\\n max-width: \", \";\\n }\\n\\n @media (min-width: \", \") {\\n padding-right: \", \";\\n padding-left: \", \";\\n max-width: \", \";\\n }\\n \"])), vxContainerPaddingMD, vxContainerPaddingMD, sysSizeMediaXxl, sysSizeMediaMd, sysSpaceJumbo, sysSpaceJumbo, sysSizeMediaXxl, sysSizeMediaXxl, sysSpaceXl4, sysSpaceXl4, sysSizeMediaXxl);\n var row = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: row;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n margin-right: -\", \";\\n margin-left: -\", \";\\n \"])), sysSpaceMd, sysSpaceMd);\n var containerForm = css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n label: container_form;\\n width: 100%;\\n padding-right: 0;\\n padding-left: 0;\\n margin-right: auto;\\n margin-left: auto;\\n \"])));\n var containerFluid = css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n label: container_fluid;\\n width: 100%;\\n padding-right: \", \";\\n padding-left: \", \";\\n margin-right: auto;\\n margin-left: auto;\\n \"])), sysSpaceMd, sysSpaceMd);\n var noGutter = css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\"\\n label: no_gutter;\\n margin-right: 0;\\n margin-left: 0;\\n\\n > [class*='-col-'],\\n > [class*='-col'] {\\n padding-right: 0;\\n padding-left: 0;\\n }\\n \"])));\n var col = css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\"\\n label: col;\\n \", \";\\n -ms-flex-preferred-size: 0;\\n flex-basis: 0;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n max-width: 100%;\\n \"])), commonColumn);\n var colAuto = css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral([\"\\n label: col_auto;\\n \", \";\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n width: auto;\\n max-width: none;\\n \"])), commonColumn);\n var colFormVspace = css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral([\"\\n label: col_form_vspace;\\n \", \"\\n \"])), commonColumnForm());\n var colFormFull = css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral([\"\\n label: col_form_full;\\n \", \";\\n \", \"\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 100%;\\n flex: 0 0 100%;\\n max-width: 100%;\\n }\\n \"])), commonColumn, commonColumnForm(), sysSizeMediaSm);\n var colFormHalf = css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral([\"\\n label: col_form_half;\\n \", \";\\n \", \"\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 50%;\\n flex: 0 0 50%;\\n max-width: 50%;\\n }\\n \"])), commonColumn, commonColumnForm(), sysSizeMediaSm);\n var colForm3qtr = css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral([\"\\n label: col_form_3_qtr;\\n \", \";\\n \", \"\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 75%;\\n flex: 0 0 75%;\\n max-width: 75%;\\n }\\n \"])), commonColumn, commonColumnForm(), sysSizeMediaSm);\n var colForm1qtr = css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral([\"\\n label: col_form_1_qtr;\\n \", \";\\n \", \"\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 25%;\\n flex: 0 0 25%;\\n max-width: 25%;\\n }\\n \"])), commonColumn, commonColumnForm(), sysSizeMediaSm);\n var colFormAuto = css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral([\"\\n label: col_form_auto;\\n \", \";\\n \", \"\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n width: auto;\\n max-width: none;\\n \"])), commonColumn, commonColumnForm());\n var orderFirst = css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral([\"\\n label: order_first;\\n -ms-flex-order: -1;\\n order: -1;\\n \"])));\n var orderLast = css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral([\"\\n label: order_last;\\n -ms-flex-order: 13;\\n order: 13;\\n \"])));\n var colSm = css(_templateObject28 || (_templateObject28 = _taggedTemplateLiteral([\"\\n label: col_sm;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex-preferred-size: 0;\\n flex-basis: 0;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n max-width: 100%;\\n }\\n \"])), commonColumn, sysSizeMediaSm);\n var colSmAuto = css(_templateObject29 || (_templateObject29 = _taggedTemplateLiteral([\"\\n label: col_sm_auto;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n width: auto;\\n max-width: none;\\n }\\n \"])), commonColumn, sysSizeMediaSm);\n var colMd = css(_templateObject30 || (_templateObject30 = _taggedTemplateLiteral([\"\\n label: col_md;\\n @media (min-width: \", \") {\\n \", \";\\n -ms-flex-preferred-size: 0;\\n flex-basis: 0;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n max-width: 100%;\\n }\\n \"])), sysSizeMediaMd, commonColumn);\n var colMdAuto = css(_templateObject31 || (_templateObject31 = _taggedTemplateLiteral([\"\\n label: col_md_auto;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n width: auto;\\n max-width: none;\\n }\\n \"])), commonColumn, sysSizeMediaMd);\n var colLg = css(_templateObject32 || (_templateObject32 = _taggedTemplateLiteral([\"\\n label: col_lg;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex-preferred-size: 0;\\n flex-basis: 0;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n max-width: 100%;\\n }\\n \"])), commonColumn, sysSizeMediaLg);\n var colLgAuto = css(_templateObject33 || (_templateObject33 = _taggedTemplateLiteral([\"\\n label: col_lg_auto;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n width: auto;\\n max-width: none;\\n }\\n \"])), commonColumn, sysSizeMediaLg);\n var colXl = css(_templateObject34 || (_templateObject34 = _taggedTemplateLiteral([\"\\n label: col_xl;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex-preferred-size: 0;\\n flex-basis: 0;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n max-width: 100%;\\n }\\n \"])), commonColumn, sysSizeMediaXl);\n var colXlAuto = css(_templateObject35 || (_templateObject35 = _taggedTemplateLiteral([\"\\n label: col_xl_auto;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n width: auto;\\n max-width: none;\\n }\\n \"])), commonColumn, sysSizeMediaXl);\n var colXxl = css(_templateObject36 || (_templateObject36 = _taggedTemplateLiteral([\"\\n label: col_xxl;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex-preferred-size: 0;\\n flex-basis: 0;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n max-width: 100%;\\n }\\n \"])), commonColumn, sysSizeMediaXxl);\n var colXxlAuto = css(_templateObject37 || (_templateObject37 = _taggedTemplateLiteral([\"\\n label: col_xxl_auto;\\n \", \";\\n @media (min-width: \", \") {\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n width: auto;\\n max-width: none;\\n }\\n \"])), commonColumn, sysSizeMediaXxl);\n var orderSmFirst = css(_templateObject38 || (_templateObject38 = _taggedTemplateLiteral([\"\\n label: order_sm_first;\\n @media (min-width: \", \") {\\n -ms-flex-order: -1;\\n order: -1;\\n }\\n \"])), sysSizeMediaSm);\n var orderSmLast = css(_templateObject39 || (_templateObject39 = _taggedTemplateLiteral([\"\\n label: order_sm_last;\\n @media (min-width: \", \") {\\n -ms-flex-order: 13;\\n order: 13;\\n }\\n \"])), sysSizeMediaSm);\n var orderMdFirst = css(_templateObject40 || (_templateObject40 = _taggedTemplateLiteral([\"\\n label: order_md_first;\\n @media (min-width: \", \") {\\n -ms-flex-order: -1;\\n order: -1;\\n }\\n \"])), sysSizeMediaMd);\n var orderMdLast = css(_templateObject41 || (_templateObject41 = _taggedTemplateLiteral([\"\\n label: order_md_last;\\n @media (min-width: \", \") {\\n -ms-flex-order: 13;\\n order: 13;\\n }\\n \"])), sysSizeMediaMd);\n var orderLgFirst = css(_templateObject42 || (_templateObject42 = _taggedTemplateLiteral([\"\\n label: order_lg_first;\\n @media (min-width: \", \") {\\n -ms-flex-order: -1;\\n order: -1;\\n }\\n \"])), sysSizeMediaLg);\n var orderLgLast = css(_templateObject43 || (_templateObject43 = _taggedTemplateLiteral([\"\\n label: order_lg_last;\\n @media (min-width: \", \") {\\n -ms-flex-order: 13;\\n order: 13;\\n }\\n \"])), sysSizeMediaLg);\n var orderXlFirst = css(_templateObject44 || (_templateObject44 = _taggedTemplateLiteral([\"\\n label: order_xl_first;\\n @media (min-width: \", \") {\\n -ms-flex-order: -1;\\n order: -1;\\n }\\n \"])), sysSizeMediaXl);\n var orderXlLast = css(_templateObject45 || (_templateObject45 = _taggedTemplateLiteral([\"\\n label: order_xl_last;\\n @media (min-width: \", \") {\\n -ms-flex-order: 13;\\n order: 13;\\n }\\n \"])), sysSizeMediaXl);\n var orderXxlFirst = css(_templateObject46 || (_templateObject46 = _taggedTemplateLiteral([\"\\n label: order_xxl_first;\\n @media (min-width: \", \") {\\n -ms-flex-order: -1;\\n order: -1;\\n }\\n \"])), sysSizeMediaXxl);\n var orderXxlLast = css(_templateObject47 || (_templateObject47 = _taggedTemplateLiteral([\"\\n label: order_xxl_last;\\n @media (min-width: \", \") {\\n -ms-flex-order: 13;\\n order: 13;\\n }\\n \"])), sysSizeMediaXxl);\n var justifyContentStart = css(_templateObject48 || (_templateObject48 = _taggedTemplateLiteral([\"\\n label: justify_content_start;\\n -ms-flex-pack: start !important;\\n justify-content: flex-start !important;\\n \"])));\n var justifyContentEnd = css(_templateObject49 || (_templateObject49 = _taggedTemplateLiteral([\"\\n label: justify_content_end;\\n -ms-flex-pack: end !important;\\n justify-content: flex-end !important;\\n \"])));\n var justifyContentCenter = css(_templateObject50 || (_templateObject50 = _taggedTemplateLiteral([\"\\n label: justify_content_center;\\n -ms-flex-pack: center !important;\\n justify-content: center !important;\\n \"])));\n var justifyContentBetween = css(_templateObject51 || (_templateObject51 = _taggedTemplateLiteral([\"\\n label: justify_content_between;\\n -ms-flex-pack: justify !important;\\n justify-content: space-between !important;\\n \"])));\n var justifyContentAround = css(_templateObject52 || (_templateObject52 = _taggedTemplateLiteral([\"\\n label: justify_content_around;\\n -ms-flex-pack: distribute !important;\\n justify-content: space-around !important;\\n \"])));\n return {\n firstLtrUprCase: function firstLtrUprCase(str) {\n return str && typeof str === 'string' ? str.charAt(0).toUpperCase() + str.slice(1) : str;\n },\n container: container,\n layoutContainer: layoutContainer,\n row: row,\n containerForm: containerForm,\n containerFluid: containerFluid,\n noGutter: noGutter,\n commonColumn: commonColumn,\n col: col,\n colAuto: colAuto,\n colFormVspace: colFormVspace,\n colFormFull: colFormFull,\n colFormHalf: colFormHalf,\n colForm3qtr: colForm3qtr,\n colForm1qtr: colForm1qtr,\n colFormAuto: colFormAuto,\n dynamicCol: dynamicCol,\n dynamicOrder: function dynamicOrder(breakpoint, n) {\n if (breakpoint && n) {\n return orderBreakpoint(n, breakpoint);\n }\n\n return order(n);\n },\n dynamicOffset: function dynamicOffset(breakpoint, n) {\n if (breakpoint && n) {\n return offsetBreakpoint(n, breakpoint);\n }\n\n return offset(n);\n },\n dynamicDisplay: function dynamicDisplay(breakpoint, _display) {\n if (breakpoint && _display) return displayBreakpoint(breakpoint, _display);\n return display(_display);\n },\n orderFirst: orderFirst,\n orderLast: orderLast,\n colSm: colSm,\n colSmAuto: colSmAuto,\n colMd: colMd,\n colMdAuto: colMdAuto,\n colLg: colLg,\n colLgAuto: colLgAuto,\n colXl: colXl,\n colXlAuto: colXlAuto,\n colXxl: colXxl,\n colXxlAuto: colXxlAuto,\n orderSmFirst: orderSmFirst,\n orderSmLast: orderSmLast,\n orderMdFirst: orderMdFirst,\n orderMdLast: orderMdLast,\n orderLgFirst: orderLgFirst,\n orderLgLast: orderLgLast,\n orderXlFirst: orderXlFirst,\n orderXlLast: orderXlLast,\n orderXxlFirst: orderXxlFirst,\n orderXxlLast: orderXxlLast,\n justifyContentStart: justifyContentStart,\n justifyContentEnd: justifyContentEnd,\n justifyContentCenter: justifyContentCenter,\n justifyContentBetween: justifyContentBetween,\n justifyContentAround: justifyContentAround\n };\n}\n\nvar _excluded = [\"as\", \"fluid\", \"form\", \"xxl\", \"className\"];\n\nvar getClass = function (fluid, form, xxl, _styles) {\n if (form) {\n return _styles.containerForm;\n }\n\n if (fluid) {\n return _styles.containerFluid;\n }\n\n if (xxl) {\n return _styles.layoutContainer;\n }\n\n return _styles.container;\n};\n\nvar Container = function (_ref) {\n var _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'div' : _ref$as,\n _ref$fluid = _ref.fluid,\n fluid = _ref$fluid === void 0 ? false : _ref$fluid,\n _ref$form = _ref.form,\n form = _ref$form === void 0 ? false : _ref$form,\n _ref$xxl = _ref.xxl,\n xxl = _ref$xxl === void 0 ? false : _ref$xxl,\n className = _ref.className,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n return jsx(as, _extends({\n css: getClass(fluid, form, xxl, _styles),\n className: className,\n \"data-ppui-info\": \"grid_3.3.3\"\n }, props));\n};\n\nvar _excluded$1 = [\"as\", \"className\", \"form\"];\nvar sizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar vxColClass = 'col';\n\nvar columnClasses = function (form, props, _styles) {\n var spans = [];\n var classes = [];\n\n if (form) {\n var _styles$firstLtrUprCa;\n\n var formUprCase = (_styles$firstLtrUprCa = _styles.firstLtrUprCase) === null || _styles$firstLtrUprCa === void 0 ? void 0 : _styles$firstLtrUprCa.call(_styles, form);\n classes.push(_styles[\"colForm\".concat(formUprCase)]);\n } // Iterate through breakpoint sizes, generate classes for configured breakpoints\n\n\n sizes.forEach(function (breakpoint) {\n var propValue = props[breakpoint];\n delete props[breakpoint];\n var span, offset, order, display; // Configuration is coming in as object notation\n\n if (_typeof(propValue) === 'object') {\n span = propValue.span || true;\n offset = propValue.offset;\n order = propValue.order;\n display = propValue.display;\n } else {\n span = propValue;\n\n if (typeof propValue === 'boolean') {\n display = propValue ? 'block' : 'none';\n }\n }\n\n var infix = '',\n infixLwrCse = '';\n\n if (breakpoint !== 'xs') {\n var _styles$firstLtrUprCa2;\n\n infix = (_styles$firstLtrUprCa2 = _styles.firstLtrUprCase) === null || _styles$firstLtrUprCa2 === void 0 ? void 0 : _styles$firstLtrUprCa2.call(_styles, breakpoint);\n infixLwrCse = breakpoint;\n }\n /* istanbul ignore next */\n\n\n var spanCssVal = function (spanVal) {\n var _styles$dynamicCol, _styles$firstLtrUprCa3;\n\n if (spanVal === true) {\n return _styles[\"\".concat(vxColClass).concat(infix)];\n }\n\n return typeof spanVal === 'number' ? (_styles$dynamicCol = _styles.dynamicCol) === null || _styles$dynamicCol === void 0 ? void 0 : _styles$dynamicCol.call(_styles, infixLwrCse, spanVal) : _styles[\"\".concat(vxColClass).concat(infix).concat((_styles$firstLtrUprCa3 = _styles.firstLtrUprCase) === null || _styles$firstLtrUprCa3 === void 0 ? void 0 : _styles$firstLtrUprCa3.call(_styles, spanVal))];\n }; // Append base col classess\n\n\n if (typeof span !== 'undefined') {\n spans.push(spanCssVal(span));\n } // Append order based classes\n\n\n if (typeof order !== 'undefined') {\n var _styles$dynamicOrder;\n\n classes.push((_styles$dynamicOrder = _styles.dynamicOrder) === null || _styles$dynamicOrder === void 0 ? void 0 : _styles$dynamicOrder.call(_styles, infixLwrCse, order));\n } // Append offset classes\n\n\n if (typeof offset !== 'undefined') {\n var _styles$dynamicOffset;\n\n classes.push((_styles$dynamicOffset = _styles.dynamicOffset) === null || _styles$dynamicOffset === void 0 ? void 0 : _styles$dynamicOffset.call(_styles, infixLwrCse, offset));\n } // Append display classes\n\n\n if (typeof display !== 'undefined') {\n var _styles$dynamicDispla;\n\n classes.push((_styles$dynamicDispla = _styles.dynamicDisplay) === null || _styles$dynamicDispla === void 0 ? void 0 : _styles$dynamicDispla.call(_styles, infixLwrCse, display));\n }\n }); // Add in the base col class if no spans were configured\n\n if (!spans.length && !form) {\n spans.push(_styles[\"\".concat(vxColClass)]);\n }\n\n return [].concat(spans, classes);\n};\n\nvar Col = function (_ref) {\n var _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n form = _ref.form,\n props = _objectWithoutProperties(_ref, _excluded$1);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n return jsx(as, _extends({\n css: columnClasses(form, props, _styles),\n className: className\n }, props, {\n \"data-ppui\": \"true\"\n }));\n};\n\nvar _excluded$2 = [\"as\", \"className\", \"noGutters\", \"align\"];\n\nvar Row = function (_ref) {\n var _styles$firstLtrUprCa;\n\n var _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n _ref$noGutters = _ref.noGutters,\n noGutters = _ref$noGutters === void 0 ? false : _ref$noGutters,\n _ref$align = _ref.align,\n align = _ref$align === void 0 ? null : _ref$align,\n props = _objectWithoutProperties(_ref, _excluded$2);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n /* istanbul ignore next */\n var alignUprCase = align && typeof align === 'string' ? (_styles$firstLtrUprCa = _styles.firstLtrUprCase) === null || _styles$firstLtrUprCa === void 0 ? void 0 : _styles$firstLtrUprCa.call(_styles, align) : align;\n var cssVal = [_styles.row, noGutters && _styles.noGutter, align && _styles[\"justifyContent\".concat(alignUprCase)]];\n return jsx(as, _extends({\n css: cssVal,\n className: className,\n \"data-ppui-info\": \"grid_3.3.3\"\n }, props));\n};\n\nexport { Col, Container, Row, styles as gridStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { forwardRef, useMemo } from 'react';\nimport { devWarning, utilStyles, getColorValue, ColorContext, Shimmer } from '@paypalcorp/pp-react-utils';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport { textStyles } from '@paypalcorp/pp-react-text';\nimport { math } from 'polished';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;\nfunction styles(tokens, colorTokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n devWarning('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysColorLinkAlt = tokens.sysColorLinkAlt,\n sysColorLinkAltHover = tokens.sysColorLinkAltHover,\n sysColorLinkAltActive = tokens.sysColorLinkAltActive,\n sysColorLinkContrast = tokens.sysColorLinkContrast,\n sysColorLinkContrastActive = tokens.sysColorLinkContrastActive,\n sysColorLinkContrastHover = tokens.sysColorLinkContrastHover,\n sysColorLinkMain = tokens.sysColorLinkMain,\n sysColorLinkMainActive = tokens.sysColorLinkMainActive,\n sysColorLinkMainHover = tokens.sysColorLinkMainHover,\n sysSizeIconXs = tokens.sysSizeIconXs,\n sysSizeIconSm = tokens.sysSizeIconSm,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceXl = tokens.sysSpaceXl,\n sysBorderRadiusXs = tokens.sysBorderRadiusXs;\n\n var _utilStyles = utilStyles(tokens),\n focusStyles = _utilStyles.focusStyles,\n shimmerStyles = _utilStyles.shimmerStyles;\n\n var _textStyles = textStyles(tokens),\n bodyStrong = _textStyles.bodyStrong,\n captionStrong = _textStyles.captionStrong;\n\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: links_base;\\n text-decoration: none;\\n border-radius: \", \";\\n \", \"\\n &:focus {\\n color: \", \";\\n \", \";\\n }\\n\\n &:focus,\\n &:hover {\\n text-decoration: underline;\\n cursor: pointer;\\n }\\n\\n &:hover {\\n color: \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n color: \", \";\\n background-color: \", \";\\n }\\n \"])), sysBorderRadiusXs, bodyStrong({\n color: getColorValue(colorTokens, sysColorLinkMain, 'contrast')\n }), getColorValue(colorTokens, sysColorLinkMain, 'contrast'), focusStyles.focusOffsetElement, getColorValue(colorTokens, sysColorLinkMainHover, 'contrast'), getColorValue(colorTokens, null, 'hover'), getColorValue(colorTokens, sysColorLinkMainActive, 'contrast'), getColorValue(colorTokens, null, 'active'));\n var baseIcon = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: base_icon;\\n position: relative;\\n padding-inline-start: \", \";\\n \"])), math(\"\".concat(sysSizeIconSm, \" + \").concat(sysSpaceSm)));\n var baseSmIcon = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: base_sm_icon;\\n padding-inline-start: \", \";\\n \"])), math(\"\".concat(sysSizeIconXs, \" + \").concat(sysSpaceSm)));\n var secondary = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: secondary;\\n text-decoration: underline;\\n \", \"\\n\\n &:active {\\n color: \", \";\\n text-decoration: none;\\n }\\n\\n &:focus,\\n &:hover {\\n color: \", \";\\n text-decoration: underline;\\n }\\n \"])), bodyStrong({\n color: getColorValue(colorTokens, sysColorLinkAlt, 'contrast')\n }), getColorValue(colorTokens, sysColorLinkAltActive, 'contrast'), getColorValue(colorTokens, sysColorLinkAltHover, 'contrast'));\n var shimmer = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: shimmer;\\n \", \"\\n \"])), shimmerStyles.defaults({\n height: sysSpaceXl\n }));\n var inverse = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: inverse;\\n color: \", \";\\n text-decoration: underline;\\n\\n &:visited,\\n &:focus {\\n color: \", \";\\n }\\n\\n &:hover {\\n color: \", \";\\n }\\n\\n &:active {\\n color: \", \";\\n text-decoration: underline;\\n }\\n \"])), getColorValue(colorTokens, sysColorLinkContrast, 'contrast'), getColorValue(colorTokens, sysColorLinkContrast, 'contrast'), getColorValue(colorTokens, sysColorLinkContrastHover, 'contrast'), getColorValue(colorTokens, sysColorLinkContrastActive, 'contrast'));\n var leftIcon = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: left_icon;\\n position: absolute;\\n inset: 0;\\n \"])));\n /**\n * Get caption sized styles.\n * @param useSecondaryStyles boolean\n * @param useInverseStyles boolean\n * @returns SerializedStyles\n */\n\n var getCaptionStyles = function () {\n var useSecondaryStyles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var useInverseStyles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var color = getColorValue(colorTokens, sysColorLinkMain, 'contrast');\n var variantName = 'caption_primary';\n\n if (useInverseStyles) {\n variantName = 'caption_inverse';\n color = getColorValue(colorTokens, sysColorLinkContrast, 'contrast');\n }\n\n if (useSecondaryStyles) {\n variantName = 'caption_secondary';\n color = getColorValue(colorTokens, sysColorLinkAlt, 'contrast');\n }\n\n return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: \", \";\\n \", \";\\n \"])), variantName, captionStrong({\n color: color\n }));\n };\n\n return {\n base: base,\n baseIcon: baseIcon,\n baseSmIcon: baseSmIcon,\n secondary: secondary,\n shimmer: shimmer,\n inverse: inverse,\n leftIcon: leftIcon,\n getCaptionStyles: getCaptionStyles\n };\n}\n\nvar _excluded = [\"inverse\", \"secondary\", \"size\", \"primaryAlt\", \"className\", \"leftIcon\", \"children\", \"as\", \"isLoading\"];\n\nvar internalHosts = new Set(['', 'paypal.com', 'paypal.cn', 'gopay.cn']);\nvar NO_REFERRER = /\\bnoreferrer\\b/;\nvar NO_OPENER = /\\bnoopener\\b/;\nvar Link = forwardRef(function (_ref, ref) {\n var _styles$getCaptionSty;\n\n var inverse = _ref.inverse,\n secondary = _ref.secondary,\n size = _ref.size,\n primaryAlt = _ref.primaryAlt,\n className = _ref.className,\n leftIcon = _ref.leftIcon,\n children = _ref.children,\n _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'a' : _ref$as,\n isLoading = _ref.isLoading,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var colorTokens = React.useContext(ColorContext);\n var tokens = useTheme(); // Fetch tokens from Emotion context\n\n var _styles = useMemo(function () {\n return styles(tokens, colorTokens);\n }, [tokens, colorTokens]);\n\n if (isLoading) {\n return jsx(Shimmer, _extends({\n css: _styles.shimmer,\n className: className,\n hasStyleDefaults: false,\n isInverse: inverse\n }, rest, {\n \"data-ppui\": \"true\"\n }), children);\n }\n\n var isInternalUrl = function (urlStr) {\n try {\n var url = new URL(urlStr);\n return internalHosts.has(url.hostname);\n } catch (e) {\n devWarning(\"isInternalUrl('\".concat(urlStr, \"'}) failed to parse: \").concat(e));\n }\n\n return false;\n };\n\n var checkForUnsafe = function (urlStr, rel) {\n if (!(NO_REFERRER.test(rel) && NO_OPENER.test(rel) || isInternalUrl(urlStr))) {\n devWarning(\"WARNING! '\".concat(urlStr, \"'\\nOpening 3rd party URL in a new window/tab without setting rel to \\\"noreferrer noopener\\\" is potentially unsafe.\"));\n }\n };\n\n var linkTarget = rest.target,\n _rest$rel = rest.rel,\n rel = _rest$rel === void 0 ? null : _rest$rel,\n _rest$href = rest.href,\n href = _rest$href === void 0 ? '/' : _rest$href;\n\n if (as === 'a' && (linkTarget === null || linkTarget === void 0 ? void 0 : linkTarget.trim())) {\n var _rel;\n\n if (!((_rel = rel) === null || _rel === void 0 ? void 0 : _rel.trim())) {\n rel = 'noreferrer noopener';\n } else {\n checkForUnsafe(href, rel);\n }\n }\n\n var leftIconElement = jsx(\"span\", {\n css: _styles.leftIcon,\n \"data-ppui\": \"true\"\n }, leftIcon);\n var isSecondaryStyles = primaryAlt || secondary;\n var linkStyles = [_styles.base, leftIcon && _styles.baseIcon, leftIcon && size === 'sm' && _styles.baseSmIcon, inverse && _styles.inverse, isSecondaryStyles && _styles.secondary, size === 'sm' && ((_styles$getCaptionSty = _styles.getCaptionStyles) === null || _styles$getCaptionSty === void 0 ? void 0 : _styles$getCaptionSty.call(_styles, isSecondaryStyles, inverse))];\n return jsx(as, _extends({\n css: linkStyles,\n className: className,\n ref: ref,\n \"data-ppui-info\": \"links_4.6.4\",\n target: linkTarget,\n rel: rel\n }, rest), leftIcon && leftIconElement, children);\n});\n\nexport { Link, styles as linkStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { useMemo, useRef, useEffect, useState } from 'react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { devWarning, utilStyles, KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport { CaptionText, BodyText } from '@paypalcorp/pp-react-text';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { CheckmarkIcon } from '@paypalcorp/pp-react-icons';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n devWarning('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {\n listItem: function listItem() {},\n align: function () {}\n };\n }\n\n var sysColorBackgroundMediumContrast = tokens.sysColorBackgroundMediumContrast,\n sysColorPrimaryMain = tokens.sysColorPrimaryMain,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceXs = tokens.sysSpaceXs,\n sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysColorBackgroundSurfaceHover = tokens.sysColorBackgroundSurfaceHover,\n sysColorBackgroundSurfaceActive = tokens.sysColorBackgroundSurfaceActive;\n\n var _utilStyles = utilStyles(tokens),\n focusStyles = _utilStyles.focusStyles;\n\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: list_base;\\n list-style: none;\\n padding: 0;\\n margin: 0;\\n background-color: transparent;\\n \"])));\n var listItemWrapper = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: list_item_wrapper;\\n padding: \", \" \", \";\\n display: flex;\\n text-decoration: none;\\n background-color: \", \";\\n outline: none;\\n\\n > div:not(:last-child),\\n a:not(:last-child) {\\n margin-inline-end: \", \";\\n }\\n \"])), sysSpaceMd, sysSpaceLg, sysColorBackgroundSurface, sysSpaceSm);\n var hoverAndActiveStyles = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: hover_active;\\n cursor: pointer;\\n position: relative;\\n &:hover {\\n background-color: \", \";\\n }\\n &:active {\\n background-color: \", \";\\n }\\n \"])), sysColorBackgroundSurfaceHover, sysColorBackgroundSurfaceActive);\n var highlight = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: highlight;\\n background-color: \", \";\\n \"])), sysColorBackgroundSurfaceHover);\n var decoration = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: decoration;\\n display: inherit;\\n color: \", \"; // Possible Breaking Change - Review later with team.\\n pointer-events: none;\\n flex-grow: 0;\\n \"])), sysColorPrimaryMain);\n var content = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: content;\\n align-self: center;\\n display: inline-flex;\\n flex-direction: column;\\n gap: \", \";\\n pointer-events: none;\\n flex-grow: 1;\\n \"])), sysSpaceXs);\n var action = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: action;\\n * {\\n pointer-events: auto;\\n }\\n \"])));\n var trailingContent = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: trailing_content;\\n align-self: center;\\n text-align: right;\\n display: flex;\\n flex-direction: column;\\n gap: \", \";\\n pointer-events: none;\\n flex-grow: 0;\\n [dir='rtl'] & {\\n text-align: left;\\n justify-self: end;\\n }\\n \"])), sysSpaceXs);\n var text = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: text;\\n margin: 0;\\n \"])));\n var labelDescription = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: secondary_text;\\n \", \";\\n color: \", \";\\n \"])), text, sysColorBackgroundMediumContrast);\n\n var align = function () {\n var alignment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'top';\n return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n align-self: \", \";\\n \"])), {\n top: 'start',\n bottom: 'end',\n center: 'center'\n }[alignment] || 'start');\n };\n\n var focusActive = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n label: keyboard_active;\\n position: relative;\\n &:focus {\\n \", \";\\n }\\n \"])), focusStyles.focusInlineElement);\n var sectionList = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: section_list;\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n \"])));\n var title = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: title;\\n padding: \", \" \", \";\\n \"])), sysSpaceMd, sysSpaceLg);\n return {\n base: base,\n listItemWrapper: listItemWrapper,\n hoverAndActiveStyles: hoverAndActiveStyles,\n highlight: highlight,\n content: content,\n action: action,\n decoration: decoration,\n trailingContent: trailingContent,\n text: text,\n labelDescription: labelDescription,\n align: align,\n focusActive: focusActive,\n sectionList: sectionList,\n title: title\n };\n}\n\nvar _excluded = [\"label\", \"labelLineClamp\", \"status\", \"labelContext\", \"labelDescription\", \"labelDescriptionLineClamp\", \"alert\", \"action\", \"value\", \"decoration\", \"trailingContent\", \"navigationOptions\", \"className\", \"focusActive\", \"isFocused\", \"isHighlighted\", \"isSelected\", \"as\", \"isItemFocusable\", \"isItemNavigational\", \"ariaDescribedby\", \"role\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/* eslint-disable complexity */\n\nvar ListItem = function (_ref) {\n var label = _ref.label,\n labelLineClamp = _ref.labelLineClamp,\n status = _ref.status,\n labelContext = _ref.labelContext,\n labelDescription = _ref.labelDescription,\n labelDescriptionLineClamp = _ref.labelDescriptionLineClamp,\n alert = _ref.alert,\n action = _ref.action,\n value = _ref.value,\n decoration = _ref.decoration,\n trailingContent = _ref.trailingContent,\n navigationOptions = _ref.navigationOptions,\n className = _ref.className,\n focusActive = _ref.focusActive,\n isFocused = _ref.isFocused,\n isHighlighted = _ref.isHighlighted,\n isSelected = _ref.isSelected,\n _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'div' : _ref$as,\n isItemFocusable = _ref.isItemFocusable,\n isItemNavigational = _ref.isItemNavigational,\n ariaDescribedby = _ref.ariaDescribedby,\n role = _ref.role,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var listRef = useRef();\n useEffect(function () {\n if (isFocused) {\n listRef.current.focus();\n }\n }, [isFocused]);\n var listItemWrapperCSS = [_styles.listItemWrapper, isItemNavigational && _styles.hoverAndActiveStyles, isHighlighted && _styles.highlight, isItemFocusable && _styles.focusActive];\n var decorationCSS = [_styles.decoration, decoration && _styles.align(decoration.align)];\n var trailingContentCSS = [_styles.trailingContent, trailingContent && _styles.align(trailingContent.align)];\n\n var navigationProps = navigationOptions && _objectSpread({}, navigationOptions);\n\n return jsx(as, _extends({\n css: listItemWrapperCSS,\n role: role,\n tabIndex: -1,\n ref: listRef\n }, navigationProps, rest, {\n \"aria-describedby\": ariaDescribedby,\n \"aria-selected\": isSelected !== undefined && isSelected,\n \"data-ppui\": \"true\"\n }), (decoration === null || decoration === void 0 ? void 0 : decoration.thumbnail) && jsx(\"div\", {\n css: decorationCSS,\n \"data-ppui\": \"true\"\n }, decoration.thumbnail), (!!label || !!alert || !!action || !!status || !!labelContext || !!labelDescription) && jsx(\"div\", {\n css: _styles.content,\n \"data-ppui\": \"true\"\n }, status && jsx(\"div\", {\n \"data-ppui\": \"true\"\n }, status), labelContext && jsx(CaptionText, {\n as: \"p\",\n css: _styles.labelDescription,\n \"data-ppui\": \"true\"\n }, labelContext, \" \\xA0\"), label && jsx(BodyText, {\n as: \"p\",\n strong: isSelected,\n css: _styles.text,\n clampAtLine: labelLineClamp,\n \"data-ppui\": \"true\"\n }, label, \" \\xA0\"), labelDescription && jsx(CaptionText, {\n as: \"p\",\n css: _styles.labelDescription,\n clampAtLine: labelDescriptionLineClamp,\n \"data-ppui\": \"true\"\n }, labelDescription, \" \\xA0\"), alert, action && jsx(\"div\", {\n css: _styles.action,\n \"data-ppui\": \"true\"\n }, action)), (trailingContent || isSelected) && jsx(\"div\", {\n css: trailingContentCSS,\n \"data-ppui\": \"true\"\n }, isSelected ? jsx(CheckmarkIcon, {\n size: \"sm\",\n color: \"SelectedMain\",\n \"data-ppui\": \"true\"\n }) : null, (trailingContent === null || trailingContent === void 0 ? void 0 : trailingContent.status) && jsx(\"div\", {\n \"data-ppui\": \"true\"\n }, trailingContent.status), (trailingContent === null || trailingContent === void 0 ? void 0 : trailingContent.labelContext) && jsx(CaptionText, {\n as: \"p\",\n css: _styles.labelDescription,\n \"data-ppui\": \"true\"\n }, trailingContent.labelContext), (trailingContent === null || trailingContent === void 0 ? void 0 : trailingContent.label) && jsx(BodyText, {\n as: \"p\",\n css: _styles.text,\n \"data-ppui\": \"true\"\n }, trailingContent.label), (trailingContent === null || trailingContent === void 0 ? void 0 : trailingContent.labelDescription) && jsx(CaptionText, {\n as: \"p\",\n css: _styles.labelDescription,\n \"data-ppui\": \"true\"\n }, trailingContent.labelDescription), (trailingContent === null || trailingContent === void 0 ? void 0 : trailingContent.action) && jsx(\"div\", {\n css: _styles.action,\n \"data-ppui\": \"true\"\n }, trailingContent.action), (trailingContent === null || trailingContent === void 0 ? void 0 : trailingContent.icon) && jsx(\"div\", {\n css: _styles.action,\n \"data-ppui\": \"true\"\n }, trailingContent.icon)));\n};\n\nvar _excluded$1 = [\"options\", \"listStyles\", \"focusActive\", \"activeIndex\", \"focusedIndex\", \"onKeyDown\", \"onClick\", \"onFocus\", \"onBlur\", \"hasSections\", \"isTextHighlighted\", \"itemAs\"];\nvar List = React.forwardRef(function (_ref, ref) {\n var options = _ref.options,\n listStyles = _ref.listStyles,\n focusActive = _ref.focusActive,\n _ref$activeIndex = _ref.activeIndex,\n activeIndex = _ref$activeIndex === void 0 ? -1 : _ref$activeIndex,\n _ref$focusedIndex = _ref.focusedIndex,\n focusedIndex = _ref$focusedIndex === void 0 ? -1 : _ref$focusedIndex,\n onKeyDown = _ref.onKeyDown,\n onClick = _ref.onClick,\n onFocus = _ref.onFocus,\n onBlur = _ref.onBlur,\n hasSections = _ref.hasSections,\n isTextHighlighted = _ref.isTextHighlighted,\n _ref$itemAs = _ref.itemAs,\n itemAs = _ref$itemAs === void 0 ? ListItem : _ref$itemAs,\n rest = _objectWithoutProperties(_ref, _excluded$1);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var listRef = useRef();\n var computedRef = ref || listRef;\n\n var _useState = useState(focusedIndex),\n _useState2 = _slicedToArray(_useState, 2),\n focusedIndexRef = _useState2[0],\n setFocusedIndex = _useState2[1];\n\n useEffect(function () {\n setFocusedIndex(focusedIndex);\n }, [focusedIndex]);\n\n var handleClick = function (evt, index) {\n setFocusedIndex(index);\n /* istanbul ignore next */\n\n if (onClick) {\n onClick(evt, index);\n }\n };\n /* Create a flat list of sectionItems for highlight and selection by index */\n\n\n var normalizeSectionItem = function (items) {\n return items.reduce(function (acc, item) {\n /* istanbul ignore next */\n if (item === null || item === void 0 ? void 0 : item.sectionItems) {\n acc.push.apply(acc, _toConsumableArray(item.sectionItems));\n }\n\n return acc;\n }, []);\n };\n\n var listItems = function (optList, ItemAs, sectionId) {\n var normalizedIndex = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n return optList.map(function (option, index) {\n var _option$value;\n\n if (typeof option.label !== 'string' && !option.value) {\n devWarning('When label is a React Element, `value` property is necessary in option');\n }\n\n var hasOnClick = onClick || option.onClick;\n var isItemNavigational = !!hasOnClick || !!option.navigationOptions;\n var idx = hasSections ? index + normalizedIndex : index;\n var otherProps = {\n value: (_option$value = option.value) !== null && _option$value !== void 0 ? _option$value : option.label,\n role: hasOnClick ? 'option' : null,\n focusActive: focusActive,\n isFocused: focusActive && focusedIndexRef === idx,\n isHighlighted: activeIndex === idx,\n isItemNavigational: isItemNavigational,\n isItemFocusable: focusActive !== null && focusActive !== void 0 ? focusActive : isItemNavigational,\n as: option.navigationOptions ? 'a' : 'div',\n ariaDescribedby: hasSections ? sectionId : null\n };\n return jsx(\"li\", {\n className: option.className //@ts-ignore\n ,\n onClick: function (evt) {\n return handleClick(evt, idx);\n },\n key: idx,\n role: \"listitem\",\n \"data-value\": option.value,\n \"data-ppui\": \"true\"\n }, jsx(ItemAs, _extends({}, otherProps, option, {\n \"data-ppui\": \"true\"\n })));\n });\n };\n\n return jsx(\"menu\", _extends({\n css: [_styles.base, listStyles],\n ref: computedRef,\n tabIndex: focusActive && focusedIndexRef === -1 ? 0 : -1\n }, rest, {\n onFocus: function handleListFocus(evt) {\n var isFocusedCurrent = focusActive && evt.target === computedRef.current && evt.currentTarget === computedRef.current;\n\n if (!onKeyDown && isFocusedCurrent) {\n setFocusedIndex(0);\n }\n\n if (onFocus) {\n onFocus(evt);\n }\n },\n onBlur: function handleListBlur(evt) {\n var isTargetContained = !computedRef.current.contains(evt.target) || !evt.relatedTarget;\n\n if (!onKeyDown && focusActive && isTargetContained) {\n setFocusedIndex(-1);\n }\n\n if (onBlur) {\n onBlur(evt);\n }\n },\n onKeyDown: function handleKey(evt) {\n var tempOptions = hasSections ? normalizeSectionItem(options) : options;\n\n if (onKeyDown) {\n onKeyDown(evt);\n } else {\n /* istanbul ignore next */\n var KeyCode = new KeyboardCode(evt.key);\n\n if (KeyCode.IS_ARROW_UP && focusedIndexRef > 0) {\n evt.preventDefault();\n setFocusedIndex(focusedIndexRef - 1);\n } else if (KeyCode.IS_ARROW_DOWN && focusedIndexRef < tempOptions.length - 1) {\n evt.preventDefault();\n setFocusedIndex(focusedIndexRef + 1);\n } else if ((KeyCode.IS_ENTER || KeyCode.IS_SPACEBAR) && onClick) {\n evt.preventDefault();\n handleClick(evt, focusedIndexRef);\n }\n }\n },\n \"data-ppui\": \"true\"\n }), hasSections ? function listSectionItems(optList, ItemAs) {\n var currentNormalizedIndex = 0;\n return optList.reduce(function (acc, option) {\n var _option$sectionItems;\n\n if (option === null || option === void 0 ? void 0 : (_option$sectionItems = option.sectionItems) === null || _option$sectionItems === void 0 ? void 0 : _option$sectionItems.length) {\n /* istanbul ignore next */\n var uniqueKey = option.id ? option.id : Math.floor(Math.random() * (1000 - 1));\n acc.push(jsx(\"li\", {\n role: \"presentation\",\n key: uniqueKey,\n \"data-ppui\": \"true\"\n }, option.title && jsx(\"div\", {\n css: _styles.title,\n id: option.id,\n \"aria-hidden\": \"true\",\n \"data-ppui\": \"true\"\n }, jsx(CaptionText, {\n \"data-ppui\": \"true\"\n }, option.title)), jsx(\"menu\", _extends({\n \"aria-labelledby\": option.id,\n css: _styles.sectionList\n }, rest, {\n \"data-ppui\": \"true\"\n }), listItems(option.sectionItems, ItemAs, option.id, currentNormalizedIndex))));\n currentNormalizedIndex += option.sectionItems.length;\n }\n\n return acc;\n }, []);\n }(options, itemAs) : listItems(options, itemAs));\n});\n\nexport { List, ListItem, styles as listStyles };\n","const PAYPAL_THEME = {\n \"name\": \"paypal\",\n \"mode\": \"light\",\n \"sysSizeIconXs\": \"1.125rem\",\n \"sysSizeIconSm\": \"1.5rem\",\n \"sysSizeIconMd\": \"2rem\",\n \"sysSizeIconLg\": \"3rem\",\n \"sysSizeIconXl\": \"4rem\",\n \"sysSizePictogramSm\": \"6rem\",\n \"sysSizePictogramMd\": \"8.5rem\",\n \"sysSizePictogramLg\": \"10rem\",\n \"sysSizeCircleXs\": \"1.5rem\",\n \"sysSizeCircleSm\": \"2rem\",\n \"sysSizeCircleMd\": \"3rem\",\n \"sysSizeCircleLg\": \"4rem\",\n \"sysSizeCircleXl\": \"6rem\",\n \"sysSizeTapTargetXs\": \"2.5rem\",\n \"sysSizeTapTargetSm\": \"2.75rem\",\n \"sysSizeTapTargetDefault\": \"3rem\",\n \"sysSizeTapTargetLg\": \"4rem\",\n \"sysSizePointerWidthSm\": \"0.75rem\",\n \"sysSizePointerWidthLg\": \"1rem\",\n \"sysSizeIndicatorXs\": \"0.1875rem\",\n \"sysSizeIndicatorSm\": \"0.25rem\",\n \"sysSizeIndicatorMd\": \"0.375rem\",\n \"sysSizeIndicatorLg\": \"0.5rem\",\n \"sysSizeFieldSm\": \"3rem\",\n \"sysSizeFieldLg\": \"4rem\",\n \"sysSizeMediaXs\": \"22rem\",\n \"sysSizeMediaSm\": \"36rem\",\n \"sysSizeMediaMd\": \"47rem\",\n \"sysSizeMediaLg\": \"64rem\",\n \"sysSizeMediaXl\": \"72rem\",\n \"sysSizeMediaXxl\": \"90rem\",\n \"sysSpaceTiny\": \"0.125rem\",\n \"sysSpaceXs\": \"0.25rem\",\n \"sysSpaceSm\": \"0.5rem\",\n \"sysSpaceMd\": \"0.75rem\",\n \"sysSpaceLg\": \"1rem\",\n \"sysSpaceXl\": \"1.5rem\",\n \"sysSpaceJumbo\": \"2rem\",\n \"sysElevationLevel1Yoffset\": \"0.0625rem\",\n \"sysElevationLevel1Opacity\": 0.08,\n \"sysElevationLevel1Blur\": \"0.75rem\",\n \"sysElevationLevel2Yoffset\": \"0.125rem\",\n \"sysElevationLevel2Opacity\": 0.1,\n \"sysElevationLevel2Blur\": \"0.875rem\",\n \"sysElevationLevel3Yoffset\": \"0.125rem\",\n \"sysElevationLevel3Opacity\": 0.1,\n \"sysElevationLevel3Blur\": \"1.125rem\",\n \"sysElevationBlurCurve\": 1,\n \"sysElevationBlurSlope\": -1,\n \"sysElevationBlurBase\": \"0.625rem\",\n \"sysElevationOpacity\": 0.15,\n \"sysElevationBrightenFactor\": 0.02,\n \"sysElevationVerticalOffsetRatio\": 1,\n \"sysElevationHorizontalOffsetRatio\": 0,\n \"sysMotionTimingX1\": 0,\n \"sysMotionTimingY1\": 0.9,\n \"sysMotionTimingX2\": 0.3,\n \"sysMotionTimingY2\": 1,\n \"sysMotionDurationHover\": \"0.10s\",\n \"sysMotionDurationAction\": \"0.20s\",\n \"sysMotionDurationArrive\": \"0.50s\",\n \"sysMotionDurationDepart\": \"0.30s\",\n \"sysMotionDurationRepeat\": \"1.30s\",\n \"sysMotionDurationLinger\": \"7.00s\",\n \"sysMotionDurationEnterSmall\": \"0.20s\",\n \"sysMotionDurationEnterMedium\": \"0.30s\",\n \"sysMotionDurationEnterLarge\": \"0.50s\",\n \"sysMotionDurationExitSmall\": \"0.10s\",\n \"sysMotionDurationExitMedium\": \"0.20s\",\n \"sysMotionDurationExitLarge\": \"0.20s\",\n \"sysMotionDurationMoveSmall\": \"0.20s\",\n \"sysMotionDurationMoveMedium\": \"0.50s\",\n \"sysMotionDurationMoveLarge\": \"0.80s\",\n \"sysMotionDurationLoopBackForth\": \"0.50s\",\n \"sysMotionDurationLoopStandard\": \"1.30s\",\n \"sysMotionEasingEnterSmall\": \"0,0,0,1\",\n \"sysMotionEasingEnterMedium\": \"0.05,0.7,0.1,1\",\n \"sysMotionEasingEnterLarge\": \"0.05,0.7,0.1,1\",\n \"sysMotionEasingExitSmall\": \"0.3,0,1,1\",\n \"sysMotionEasingExitMedium\": \"0.3,0,0.8,0.15\",\n \"sysMotionEasingExitLarge\": \"0.3,0,0.8,0.15\",\n \"sysMotionEasingMoveSmall\": \"0.2,0,0,1\",\n \"sysMotionEasingMoveMedium\": \"0.2,0,0,1\",\n \"sysMotionEasingMoveLarge\": \"0.2,0,0,1\",\n \"sysMotionEasingLoopBackForth\": \"0.2,0,0,1\",\n \"sysMotionEasingLoopStandard\": \"0,0,1,1\",\n \"sysBorderThicknessNormal\": \"0.0625rem\",\n \"sysBorderThicknessEmphasis\": \"0.125rem\",\n \"sysBorderThicknessFocus\": \"0.1875rem\",\n \"sysBorderThicknessFocusOutline\": \"0.375rem\",\n \"sysBorderRadiusXs\": \"0.125rem\",\n \"sysBorderRadiusSm\": \"0.25rem\",\n \"sysBorderRadiusMd\": \"0.5rem\",\n \"sysBorderRadiusLg\": \"0.75rem\",\n \"sysBorderRadiusInteractive\": \"50%\",\n \"sysTypographyDisplayFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyDisplaySize\": \"4.5rem\",\n \"sysTypographyDisplayWeight\": 400,\n \"sysTypographyDisplayLineHeight\": \"4.875rem\",\n \"sysTypographyDisplayMaxScaleFactor\": 1.25,\n \"sysTypographyHeadingLgFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyHeadingLgSize\": \"2.75rem\",\n \"sysTypographyHeadingLgWeight\": 400,\n \"sysTypographyHeadingLgLineHeight\": \"3rem\",\n \"sysTypographyHeadingLgMaxScaleFactor\": 1.5,\n \"sysTypographyHeadingSmFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyHeadingSmSize\": \"1.75rem\",\n \"sysTypographyHeadingSmWeight\": 400,\n \"sysTypographyHeadingSmLineHeight\": \"2.25rem\",\n \"sysTypographyHeadingSmMaxScaleFactor\": 1.5,\n \"sysTypographyTitleStrongFamily\": \"PayPalOpen-Bold\",\n \"sysTypographyTitleStrongSize\": \"1.375rem\",\n \"sysTypographyTitleStrongWeight\": 400,\n \"sysTypographyTitleStrongLineHeight\": \"1.75rem\",\n \"sysTypographyTitleStrongMaxScaleFactor\": 2,\n \"sysTypographyTitleFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyTitleSize\": \"1.375rem\",\n \"sysTypographyTitleWeight\": 400,\n \"sysTypographyTitleLineHeight\": \"1.75rem\",\n \"sysTypographyTitleMaxScaleFactor\": 2,\n \"sysTypographyBodyStrongFamily\": \"PayPalOpen-Bold\",\n \"sysTypographyBodyStrongSize\": \"1.125rem\",\n \"sysTypographyBodyStrongWeight\": 400,\n \"sysTypographyBodyStrongLineHeight\": \"1.5rem\",\n \"sysTypographyBodyStrongMaxScaleFactor\": 2,\n \"sysTypographyBodyFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyBodySize\": \"1.125rem\",\n \"sysTypographyBodyWeight\": 400,\n \"sysTypographyBodyLineHeight\": \"1.5rem\",\n \"sysTypographyBodyMaxScaleFactor\": 2,\n \"sysTypographyCaptionStrongFamily\": \"PayPalOpen-Bold\",\n \"sysTypographyCaptionStrongSize\": \"0.875rem\",\n \"sysTypographyCaptionStrongWeight\": 400,\n \"sysTypographyCaptionStrongLineHeight\": \"1.25rem\",\n \"sysTypographyCaptionStrongMaxScaleFactor\": 2,\n \"sysTypographyCaptionFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyCaptionSize\": \"0.875rem\",\n \"sysTypographyCaptionWeight\": 400,\n \"sysTypographyCaptionLineHeight\": \"1.25rem\",\n \"sysTypographyCaptionMaxScaleFactor\": 2,\n \"sysTypographyLinkLgFamily\": \"PayPalOpen-Bold\",\n \"sysTypographyLinkLgSize\": \"1.125rem\",\n \"sysTypographyLinkLgWeight\": 400,\n \"sysTypographyLinkLgLineHeight\": \"1.5rem\",\n \"sysTypographyLinkLgUnderline\": true,\n \"sysTypographyLinkLgMaxScaleFactor\": 2,\n \"sysTypographyLinkSmFamily\": \"PayPalOpen-Bold\",\n \"sysTypographyLinkSmSize\": \"0.875rem\",\n \"sysTypographyLinkSmWeight\": 400,\n \"sysTypographyLinkSmLineHeight\": \"1.25rem\",\n \"sysTypographyLinkSmUnderline\": true,\n \"sysTypographyLinkSmMaxScaleFactor\": 2,\n \"sysTypographyButtonLgFamily\": \"PayPalOpen-Bold\",\n \"sysTypographyButtonLgSize\": \"1.125rem\",\n \"sysTypographyButtonLgWeight\": 400,\n \"sysTypographyButtonLgLineHeight\": \"1.5rem\",\n \"sysTypographyButtonLgMaxScaleFactor\": 2,\n \"sysTypographyButtonSmFamily\": \"PayPalOpen-Bold\",\n \"sysTypographyButtonSmSize\": \"0.875rem\",\n \"sysTypographyButtonSmWeight\": 400,\n \"sysTypographyButtonSmLineHeight\": \"1.25rem\",\n \"sysTypographyButtonSmMaxScaleFactor\": 2,\n \"sysTypographyFieldLabelLgFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyFieldLabelLgSize\": \"1.125rem\",\n \"sysTypographyFieldLabelLgWeight\": 400,\n \"sysTypographyFieldLabelLgLineHeight\": \"1.5rem\",\n \"sysTypographyFieldLabelLgMaxScaleFactor\": 2,\n \"sysTypographyFieldLabelSmFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyFieldLabelSmSize\": \"0.875rem\",\n \"sysTypographyFieldLabelSmWeight\": 400,\n \"sysTypographyFieldLabelSmLineHeight\": \"1.25rem\",\n \"sysTypographyFieldLabelSmMaxScaleFactor\": 2,\n \"sysTypographyFieldValueXlFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyFieldValueXlSize\": \"2.75rem\",\n \"sysTypographyFieldValueXlWeight\": 400,\n \"sysTypographyFieldValueXlLineHeight\": \"3rem\",\n \"sysTypographyFieldValueXlMaxScaleFactor\": 1.5,\n \"sysTypographyFieldValueLgFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyFieldValueLgSize\": \"1.75rem\",\n \"sysTypographyFieldValueLgWeight\": 400,\n \"sysTypographyFieldValueLgLineHeight\": \"2.25rem\",\n \"sysTypographyFieldValueLgMaxScaleFactor\": 2,\n \"sysTypographyFieldValueSmFamily\": \"PayPalOpen-Regular\",\n \"sysTypographyFieldValueSmSize\": \"1.125rem\",\n \"sysTypographyFieldValueSmWeight\": 400,\n \"sysTypographyFieldValueSmLineHeight\": \"1.5rem\",\n \"sysTypographyFieldValueSmMaxScaleFactor\": 2,\n \"sysColorBackgroundMain\": \"#faf8f5\",\n \"sysColorBackgroundAlt\": \"#f1ede8\",\n \"sysColorBackgroundSurface\": \"#ffffff\",\n \"sysColorBackgroundSurfaceHover\": \"#faf8f5\",\n \"sysColorBackgroundSurfaceActive\": \"#f1ede8\",\n \"sysColorBackgroundHighContrast\": \"#001435\",\n \"sysColorBackgroundMediumContrast\": \"#545d68\",\n \"sysColorPrimaryMain\": \"#003087\",\n \"sysColorPrimaryMainHover\": \"#0070e0\",\n \"sysColorPrimaryMainActive\": \"#001c64\",\n \"sysColorPrimaryContrast\": \"#ffffff\",\n \"sysColorPrimaryContrastHover\": \"#b9effc\",\n \"sysColorPrimaryContrastActive\": \"#5bbbfc\",\n \"sysColorSecondaryMain\": \"#0070e0\",\n \"sysColorSecondaryMainHover\": \"#5bbbfc\",\n \"sysColorSecondaryMainActive\": \"#003087\",\n \"sysColorSecondaryContrast\": \"#ffffff\",\n \"sysColorTertiaryMain\": \"#faf8f5\",\n \"sysColorTertiaryMainHover\": \"#f1ede8\",\n \"sysColorTertiaryMainActive\": \"#e6e0d9\",\n \"sysColorTertiaryContrast\": \"#003087\",\n \"sysColorFeaturedMain\": \"#ffd140\",\n \"sysColorFeaturedMainHover\": \"#ffe888\",\n \"sysColorFeaturedMainActive\": \"#ff9100\",\n \"sysColorFeaturedContrast\": \"#003087\",\n \"sysColorUnselectedMain\": \"#e6e0d9\",\n \"sysColorUnselectedMainHover\": \"#faf8f5\",\n \"sysColorUnselectedMainActive\": \"#f1ede8\",\n \"sysColorUnselectedContrast\": \"#545d68\",\n \"sysColorSelectedMain\": \"#0070e0\",\n \"sysColorSelectedMainHover\": \"#5bbbfc\",\n \"sysColorSelectedMainActive\": \"#003087\",\n \"sysColorSelectedContrast\": \"#ffffff\",\n \"sysColorSelectedRangeMain\": \"#b9effc\",\n \"sysColorSelectedRangeMainHover\": \"#5bbbfc\",\n \"sysColorSelectedRangeMainActive\": \"#0070e0\",\n \"sysColorSelectedRangeContrast\": \"#003087\",\n \"sysColorLinkMain\": \"#0070e0\",\n \"sysColorLinkMainHover\": \"#003087\",\n \"sysColorLinkMainActive\": \"#003087\",\n \"sysColorLinkAlt\": \"#001435\",\n \"sysColorLinkAltHover\": \"#001435\",\n \"sysColorLinkAltActive\": \"#001435\",\n \"sysColorLinkContrast\": \"#ffffff\",\n \"sysColorLinkContrastHover\": \"#b9effc\",\n \"sysColorLinkContrastActive\": \"#5bbbfc\",\n \"sysColorOverlayMain\": \"rgba(0, 0, 0, 0.55)\",\n \"sysColorOverlayMainHover\": \"rgba(0, 0, 0, 0.4)\",\n \"sysColorOverlayMainActive\": \"rgba(0, 0, 0, 0.7)\",\n \"sysColorOverlayContrast\": \"#ffffff\",\n \"sysColorAccent1Main\": \"#003087\",\n \"sysColorAccent1Contrast\": \"#ffffff\",\n \"sysColorAccent2Main\": \"#e02d50\",\n \"sysColorAccent2Contrast\": \"#ffffff\",\n \"sysColorAccent3Main\": \"#388c00\",\n \"sysColorAccent3Contrast\": \"#ffffff\",\n \"sysColorAccent4Main\": \"#7252cc\",\n \"sysColorAccent4Contrast\": \"#ffffff\",\n \"sysColorErrorMain\": \"#d50102\",\n \"sysColorErrorMainHover\": \"#ff5a6d\",\n \"sysColorErrorMainActive\": \"#9b0021\",\n \"sysColorErrorContrast\": \"#ffffff\",\n \"sysColorWarningMain\": \"#ffbe4a\",\n \"sysColorWarningMainHover\": \"#ffe888\",\n \"sysColorWarningMainActive\": \"#ff9100\",\n \"sysColorWarningAlt\": \"#e85e00\",\n \"sysColorWarningContrast\": \"#001435\",\n \"sysColorSuccessMain\": \"#0f8514\",\n \"sysColorSuccessMainHover\": \"#6fc400\",\n \"sysColorSuccessMainActive\": \"#388c00\",\n \"sysColorSuccessContrast\": \"#ffffff\",\n \"sysColorSystemMain\": \"#001435\",\n \"sysColorSystemMainHover\": \"#929496\",\n \"sysColorSystemMainActive\": \"#545d68\",\n \"sysColorSystemContrast\": \"#ffffff\",\n \"sysColorInfoMain\": \"#e6e0d9\",\n \"sysColorInfoMainHover\": \"#faf8f5\",\n \"sysColorInfoMainActive\": \"#f1ede8\",\n \"sysColorInfoContrast\": \"#001435\",\n \"sysColorSpecialtyMain\": \"#7252cc\",\n \"sysColorSpecialtyMainHover\": \"#b976ff\",\n \"sysColorSpecialtyMainActive\": \"#24247f\",\n \"sysColorSpecialtyContrast\": \"#ffffff\",\n \"sysColorStructureBorderHighContrast\": \"#929496\",\n \"sysColorStructureBorderLowContrast\": \"rgba(0, 0, 0, 0.1)\",\n \"sysColorStructureDivider\": \"#f1ede8\",\n \"sysColorStructureFocus\": \"#097ff5\",\n \"sysColorStructureFocusOutline\": \"rgba(209, 229, 249, 0.9)\",\n \"sysColorStructureErrorOutline\": \"rgba(224, 45, 80, 0.16)\",\n \"sysColorStructureScrim\": \"rgba(0, 0, 0, 0.4)\",\n \"sysColorStructureShimmer\": \"#e6e0d9\",\n \"sysColorStructureShimmerInverse\": \"#545d68\",\n \"sysColorStructureSheen\": \"rgba(255, 255, 255, 0.7)\",\n \"sysColorStructureShadow\": \"#000000\"\n};\n\nexport { PAYPAL_THEME };\n","import 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.object.entries';\nimport 'core-js/modules/es.object.keys';\nimport 'core-js/modules/es.object.values';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.includes';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.split';\nimport 'core-js/modules/web.dom-collections.for-each';\nimport { isWorldReadyInstance, Region } from '@paypalcorp/worldready-core';\nimport { assertType, assert, assertRange } from 'yaassertion';\n\nvar getMissingMetadataError = function getMissingMetadataError(path) {\n var message = \"Missing WorldReady metadata, please refer to https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about-load-worldready-data.html\";\n if (path) {\n message += \"\\nPath: \" + path;\n }\n return new Error(message);\n};\nfunction validateCldr(path, value, options) {\n if (options === void 0) {\n options = {\n skip: []\n };\n }\n var skipBoolean = options.skip.some(function (regex) {\n return regex.test(path);\n });\n if (skipBoolean) {\n return;\n }\n if (value === undefined) {\n throw getMissingMetadataError(path);\n }\n}\nvar ADDRESS_LABEL_DISPLAY_NAME_TYPES = {\n COARSE_ADDRESS: \"coarseAddress\",\n PORTABLE_ADDRESS: \"portableAddress\",\n PORTABLE_ADDRESS_VALUES: \"portableAddressValues\",\n COARSE_ADDRESS_VALUES: \"coarseAddressValues\"\n};\nvar DISPLAY_NAME_TYPES = Object.assign({}, ADDRESS_LABEL_DISPLAY_NAME_TYPES, {\n PERSON_NAME: \"personName\",\n REGION: \"region\",\n LANGUAGE: \"language\",\n DATE_TIME_FIELD: \"dateTimeField\",\n CURRENCY: \"currency\",\n MONTH: \"month\",\n DAY: \"day\",\n TERRITORY_NAME_SORT_KEY: \"territoryNameSortKey\",\n CURRENCY_NAME_SORT_KEY: \"currencyNameSortKey\"\n});\nvar ENVIRONMENT = {\n PRODUCTION: \"production\"\n};\nvar MESSAGE_MISSING = \"\\uE007\\uE007\";\nvar countryAliasMapping = {\n C2: \"CN\",\n UK: \"GB\"\n};\nfunction getResolvedRegion(region) {\n return countryAliasMapping[region] || region;\n}\nvar DisplayNames = /*#__PURE__*/function () {\n /**\n * @param {Object} worldReady\n * @param {Object} options\n * @param {String} options.type\n */\n function DisplayNames(worldReady, options) {\n var _this = this;\n if (options === void 0) {\n options = {};\n }\n // Error Checks\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assert(isWorldReadyInstance(worldReady), \"WorldReady object missing.\");\n assertType(options.type, \"options.type\", [\"string\"]);\n assertRange(options.type, Object.values(DISPLAY_NAME_TYPES), \"options.type must be one of the value from \" + Object.values(DISPLAY_NAME_TYPES));\n if (options.fallback) {\n assertRange(options.fallback, [\"code\", \"none\"], \"options.fallback must be 'none', or 'code'\");\n }\n var _options = options,\n type = _options.type;\n if (type === DISPLAY_NAME_TYPES.PERSON_NAME) {\n Region.assertType(options.nameRegion, \"options.nameRegion\");\n }\n if (Object.values(ADDRESS_LABEL_DISPLAY_NAME_TYPES).includes(type)) {\n Region.assertType(options.addressRegion, \"options.addressRegion\");\n }\n if (type === DISPLAY_NAME_TYPES.PORTABLE_ADDRESS_VALUES) {\n assertRange(options.element, [\"adminArea1\", \"adminArea2\"], \"options.element must be 'adminArea1' or 'adminArea2'\");\n }\n if (type === DISPLAY_NAME_TYPES.COARSE_ADDRESS_VALUES) {\n assertRange(options.element, [\"state\", \"city\"], \"options.element must be 'state' or 'city'\");\n }\n if (type === DISPLAY_NAME_TYPES.DATE_TIME_FIELD) {\n assertRange(options.style, [\"long\", \"short\", \"narrow\", \"abbreviated\"], \"options.style must be 'long', 'short', 'narrow' or 'abbreviated'\");\n }\n if (type === DISPLAY_NAME_TYPES.MONTH) {\n assertRange(options.style, [\"wide\", \"narrow\", \"abbreviated\"], \"options.style must be 'wide', 'narrow' or 'abbreviated'\");\n }\n if (type === DISPLAY_NAME_TYPES.DAY) {\n assertRange(options.style, [\"wide\", \"narrow\", \"short\", \"abbreviated\"], \"options.style must be 'wide', 'narrow', 'short' or 'abbreviated'\");\n }\n }\n var region = options.nameRegion || options.addressRegion;\n if (region) {\n region = Region.getRegionString(region);\n }\n var _options2 = options,\n element = _options2.element,\n style = _options2.style;\n var cldr = worldReady.globalize.cldr;\n this.fallback = options.fallback || \"code\";\n this.type = options.type;\n if (this.type === DISPLAY_NAME_TYPES.COARSE_ADDRESS_VALUES) {\n element = element === \"state\" ? \"adminArea1\" : \"adminArea2\";\n }\n var cldrDataMarketOverride, aux;\n // ../metadata/metadata-v2.js ==> injects WorldReady's name & address metadata into CLDR metadata\n switch (options.type) {\n case DISPLAY_NAME_TYPES.PERSON_NAME:\n this.cldrData = Object.assign({}, cldr.main(\"peopleNames/00\"), {}, cldr.main([\"peopleNames\", region]));\n break;\n case DISPLAY_NAME_TYPES.REGION:\n this.cldrData = Object.assign({}, cldr.main(\"localeDisplayNames/territories\"));\n cldrDataMarketOverride = Object.assign({}, cldr.main([\"marketOverrides\", worldReady.region, \"localeDisplayNames/territories\"]));\n Object.assign(this.cldrData, cldrDataMarketOverride);\n break;\n case DISPLAY_NAME_TYPES.LANGUAGE:\n this.cldrData = Object.assign({}, cldr.main(\"localeDisplayNames/languages\"));\n break;\n case DISPLAY_NAME_TYPES.MONTH:\n this.cldrData = Object.assign({}, cldr.main([\"dates/calendars/gregorian/months\", \"stand-alone\", style]));\n break;\n case DISPLAY_NAME_TYPES.DAY:\n {\n this.cldrData = Object.assign({}, cldr.main([\"dates/calendars/gregorian/days\", \"stand-alone\", style]));\n break;\n }\n case DISPLAY_NAME_TYPES.CURRENCY:\n {\n this.cldrData = {};\n Object.entries(cldr.main(\"numbers/currencies\")).forEach(function (_ref) {\n var field = _ref[0],\n value = _ref[1];\n _this.cldrData[field] = value.displayName;\n });\n }\n break;\n case DISPLAY_NAME_TYPES.DATE_TIME_FIELD:\n aux = style === \"long\" ? \"\" : \"-\" + style;\n {\n this.cldrData = {};\n Object.entries(cldr.main(\"dates/fields\")).filter(function (_ref2) {\n var field = _ref2[0];\n return field === \"\" + field.split(\"-\")[0] + aux;\n }).forEach(function (_ref3) {\n var field = _ref3[0],\n value = _ref3[1];\n _this.cldrData[field.split(\"-\")[0]] = value.displayName;\n });\n }\n break;\n case DISPLAY_NAME_TYPES.COARSE_ADDRESS:\n this.cldrData = Object.assign({}, cldr.main(\"addresses/coarse/00\"), {}, cldr.main([\"addresses/coarse\", region]));\n break;\n case DISPLAY_NAME_TYPES.PORTABLE_ADDRESS:\n this.cldrData = Object.assign({}, cldr.main(\"addresses/portable/00\"), {}, cldr.main([\"addresses/portable\", region]));\n break;\n // for coarse and portable value we need to get either adminArea1 or adminArea2\n case DISPLAY_NAME_TYPES.COARSE_ADDRESS_VALUES:\n case DISPLAY_NAME_TYPES.PORTABLE_ADDRESS_VALUES:\n // Sanitize path by escaping slashes \"/\", e.g.: \"bar/baz\" becomes \"bar_baz\"\n element.replace(/[/]/g, \"_\");\n this.cldrData = Object.assign({}, cldr.main(\"addresses/\" + element + \"/00\"), {}, cldr.main([\"addresses/\" + element, region]));\n break;\n case DISPLAY_NAME_TYPES.TERRITORY_NAME_SORT_KEY:\n this.cldrData = Object.assign({}, cldr.main(\"localeDisplayNames/territoryNameSortKey\"));\n cldrDataMarketOverride = Object.assign({}, cldr.main([\"marketOverrides\", region, \"localeDisplayNames/territoryNameSortKey\"]));\n Object.assign(this.cldrData, cldrDataMarketOverride);\n break;\n case DISPLAY_NAME_TYPES.CURRENCY_NAME_SORT_KEY:\n this.cldrData = Object.assign({}, cldr.main(\"numbers/currencyNameSortKey\"));\n break;\n }\n if (!Object.keys(this.cldrData).length) {\n validateCldr();\n }\n\n // TODO if server side only\n this._runtimeArgs = [options];\n this._runtimeValue = this.cldrData;\n }\n\n /**\n * Check if 'properties' are valid based on the DisplayNames object's type.\n * If they are, return translated array. If they are not, return error.\n * @param {Array} properties\n * @returns {Array}\n */\n var _proto = DisplayNames.prototype;\n _proto.select = function select(properties) {\n var _this2 = this;\n // Error check\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(properties, \"properties\", [\"array\", \"string\"]);\n }\n if (Array.isArray(properties)) {\n return properties.map(function (prop) {\n return _this2.select(prop);\n });\n }\n var prop = getResolvedRegion(properties);\n var value = this.cldrData[prop] === null || this.cldrData[prop] === MESSAGE_MISSING ? null : this.cldrData[prop];\n // special case for territory/currency name sort key to retrun 0\n if (value === 0) {\n return 0;\n }\n return value || (this.fallback === \"code\" ? prop : undefined);\n };\n return DisplayNames;\n}();\n\nexport { DisplayNames };\n","import 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.join';\nimport 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.number.constructor';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.object.keys';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.match';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.split';\nimport 'core-js/modules/es.string.trim';\nimport 'core-js/modules/web.dom-collections.for-each';\nimport { assertType, assertRange } from 'yaassertion';\nimport { isWorldReadyInstance } from '@paypalcorp/worldready-core';\nimport { createPhoneHandler } from 'fullstack-phone/client';\n\nvar Cldr = require('cldrjs/dist/cldr');\nvar getMissingMetadataError = function getMissingMetadataError(path) {\n var message = \"Missing WorldReady metadata, please refer to https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about-load-worldready-data.html\";\n if (path) {\n message += \"\\nPath: \" + path;\n }\n return new Error(message);\n};\nfunction globalizeToWorldReadyError(error) {\n if (error.code === \"E_MISSING_CLDR\") {\n return getMissingMetadataError(error.stack);\n }\n return new Error([\"Oops, internal error\", error.message, error.stack].join(\"\\n\"));\n}\nfunction validateCldr(path, value, options) {\n if (options === void 0) {\n options = {\n skip: []\n };\n }\n var skipBoolean = options.skip.some(function (regex) {\n return regex.test(path);\n });\n if (skipBoolean) {\n return;\n }\n if (value === undefined) {\n throw getMissingMetadataError(path);\n }\n}\n\n/**\n * This list is not comprehensive list of errors that worldready sdk throws\n * for PhoneNumberFormat.parse API. Most of the errors come from fullstack-phone\n * library that worldready sdk directly forwards to client applications.\n * The errors defined here are for the checks that worldready-sdk does on top\n * of the validations performed by fullstack phone.\n */\nvar PHONE_ERRORS = {\n ALPHA_CHARACTERS: \"PHONE_ALPHA_CHARACTERS\"\n};\nfunction adjustPhoneNumberITU(phone, regionCode) {\n if (phone === undefined || phone === null || regionCode !== \"DE\") {\n return phone;\n }\n var trimmedPhone = phone.trim();\n if (trimmedPhone && trimmedPhone.length > 11 && trimmedPhone.substring(0, 2) === \"49\") {\n phone = trimmedPhone.substring(2);\n }\n return phone;\n}\nfunction hasAlphaCharacters(phoneString) {\n var phoneStringWithoutInitialTEL = phoneString.replace(/^\\s*tel:/i, \"\"); // strip off initial \"tel:\" (if it exists)\n var parsedPhoneString = phoneStringWithoutInitialTEL.replace(/\\s*ext[.=]?/i, \"\"); // strip off \"ext.\" or \"ext=\" (if it exists)\n return Boolean(parsedPhoneString.match(/[a-zA-Z]/)); // return true if remaining string has alpha characters\n}\nfunction parseAndValidate(handler, phoneNumberToParse, regionCode) {\n // check for alpha characters other than initial \"tel:\" and return error if found\n // cf. https://github.paypal.com/Globalization-R/WorldReady-Design/wiki/normalizePhoneNumber-leniency-issue\n if (hasAlphaCharacters(phoneNumberToParse)) {\n var errors = [{\n code: PHONE_ERRORS.ALPHA_CHARACTERS\n }];\n return {\n errors: errors\n };\n }\n // > phoneObj or Error\n var parseResult = handler.parsePhoneNumber(phoneNumberToParse, regionCode);\n if (parseResult instanceof Error) {\n var _errors = [{\n code: parseResult.message\n }];\n return {\n errors: _errors\n };\n }\n var validationResult = handler.validatePhoneNumber(parseResult, regionCode);\n if (validationResult instanceof Error) {\n var _errors2 = [{\n code: validationResult.message\n }];\n return {\n errors: _errors2\n };\n }\n return parseResult;\n}\nfunction parsePhone(phoneNumber, phoneRegion, handler, regionGroups) {\n var phone = adjustPhoneNumberITU(phoneNumber, phoneRegion);\n var parseValidateResult = parseAndValidate(handler, phone, phoneRegion);\n if (!parseValidateResult.errors) {\n return parseValidateResult;\n }\n if (regionGroups) {\n for (var i = 0; i < regionGroups.length; i++) {\n var subRegionResult = parseAndValidate(handler, phone, regionGroups[i]);\n if (!subRegionResult.errors) {\n return subRegionResult;\n }\n }\n }\n return parseValidateResult;\n}\nfunction formatPhone(phoneObj, handler, style, obscure) {\n if (obscure === true && [\"national\", \"international\"].includes(style)) {\n var regex = /\\d/g;\n var formattedPhoneNumber = handler.formatPhoneNumber(phoneObj, {\n style: style\n });\n var digits = formattedPhoneNumber.match(regex) || [];\n var invisibleDigitsLength = style === \"national\" ? digits.length / 2 : (digits.length - phoneObj.countryCode.length) / 2; // number of characters to hide, which is number of (digits excluding countryCodePrefix digits)/2, e.g. for (415) 815-9546 is 5\n var firstVisibleDigitsLength = 1 + digits.length - phoneObj.nationalNumber.length;\n return formatObscured(Math.floor(invisibleDigitsLength), firstVisibleDigitsLength, formattedPhoneNumber);\n }\n return handler.formatPhoneNumber(phoneObj, {\n style: style\n });\n}\nfunction formatObscured(invisibleDigitsLength, firstVisibleDigitsLength, formattedPhoneNumber) {\n var regex = /\\d/g;\n var digitsCount = 0;\n var start, end, result;\n while (result = regex.exec(formattedPhoneNumber)) {\n digitsCount++;\n if (digitsCount === firstVisibleDigitsLength + 1) {\n start = result[\"index\"];\n }\n if (digitsCount === firstVisibleDigitsLength + invisibleDigitsLength + 1) {\n end = result[\"index\"];\n }\n }\n formattedPhoneNumber = formattedPhoneNumber.substring(0, start) + formattedPhoneNumber.replace(regex, \"*\").substring(start, end) + formattedPhoneNumber.substring(end);\n return \"\\u202A\" + formattedPhoneNumber + \"\\u202C\";\n}\n\n/**\n *\n * @param {Array} phoneRegions\n * @returns {Object} an object contains calling code and relevant phone regions\n * // For an input ['GP', 'RE', 'FR', 'GF', 'MQ', 'YT', 'BL', 'MF'], output object will be\n * {\n * '33': [ 'FR' ],\n * '262': [ 'RE', 'YT' ],\n * '590': [ 'GP', 'BL', 'MF' ],\n * '594': [ 'GF' ],\n * '596': [ 'MQ' ]\n * }\n */\nfunction getCallingCodeToPhoneRegionsMapping(phoneRegions) {\n var cldr = new Cldr(\"und\");\n return phoneRegions.reduce(function (callingCodeToCountryCodeMapping, phoneRegion) {\n var callingCode = cldr.get([\"supplemental/phoneData/callingCode\", phoneRegion]);\n if (!callingCodeToCountryCodeMapping[callingCode]) {\n callingCodeToCountryCodeMapping[callingCode] = [];\n }\n callingCodeToCountryCodeMapping[callingCode].push(phoneRegion);\n return callingCodeToCountryCodeMapping;\n }, {});\n}\n\n/**\n *\n * @param {Array} phoneRegionGroup\n * @returns {Array}\n * // For an input ['a', 'a', 'b', 'b', 'b', 'c'], the output will be\n * // ['a', 'b', 'c']\n */\n// remove duplicate calling code in case parentRegion exist in resolution-table.json\nfunction removeDuplicateCallingCode(phoneRegionGroup) {\n return phoneRegionGroup.filter(function (phoneRegion, index) {\n return phoneRegionGroup.indexOf(phoneRegion) === index;\n });\n}\nfunction getMetadata(phoneRegion) {\n var cldr = new Cldr(\"und\");\n var regionGroups = cldr.get([\"supplemental/phoneData/regionGroups\", phoneRegion]);\n var callingCode = cldr.get([\"supplemental/phoneData/callingCode\", phoneRegion]);\n var parentRegion = cldr.get([\"supplemental/phoneData/parentRegion\", callingCode]);\n var phoneRegions, callingCodePhoneRegionMapping;\n if (regionGroups) {\n phoneRegions = [phoneRegion].concat(regionGroups);\n // for every phoneRegion, add parentRegion if has;\n phoneRegions.forEach(function (phoneRegion) {\n var _callingCode = cldr.get([\"supplemental/phoneData/callingCode\", phoneRegion]);\n var _parentRegion = cldr.get([\"supplemental/phoneData/parentRegion\", _callingCode]);\n phoneRegions = _parentRegion ? [_parentRegion].concat(phoneRegions) : phoneRegions;\n phoneRegions = removeDuplicateCallingCode(phoneRegions);\n callingCodePhoneRegionMapping = getCallingCodeToPhoneRegionsMapping(phoneRegions);\n });\n } else {\n phoneRegions = parentRegion ? [parentRegion, phoneRegion] : [phoneRegion];\n callingCodePhoneRegionMapping = getCallingCodeToPhoneRegionsMapping(phoneRegions);\n }\n var countryToMetadata;\n cldr.on(\"get\", validateCldr);\n try {\n countryToMetadata = Object.assign.apply(Object, [{}].concat(phoneRegions.map(function (phoneRegion) {\n var _ref;\n return _ref = {}, _ref[phoneRegion] = cldr.get([\"supplemental/phoneData/libphonenumber\", phoneRegion]), _ref;\n })));\n } finally {\n cldr.off(\"get\", validateCldr);\n }\n var metadata = {\n regionCodes: phoneRegions,\n countryCodeToRegionCodeMap: callingCodePhoneRegionMapping,\n countryToMetadata: countryToMetadata\n };\n return {\n metadata: metadata,\n regionGroups: regionGroups\n };\n}\nfunction getAllMetadata() {\n var cldr = new Cldr(\"und\");\n var countryCodeToRegionCodeMap = cldr.get([\"supplemental/phoneData/countryCodeToRegionCodeMapping\"]);\n var countryToMetadata = cldr.get([\"supplemental/phoneData/libphonenumber\"]);\n var metadata = {\n regionCodes: Object.keys(countryToMetadata),\n countryCodeToRegionCodeMap: countryCodeToRegionCodeMap,\n countryToMetadata: countryToMetadata\n };\n return metadata;\n}\nfunction checkPhoneRegionError(phoneRegion) {\n if (!phoneRegion) {\n throw new Error(\"`phoneRegion` is missing in `new PhoneNumberFormat()` constructor\");\n }\n}\n\n/**\n *\n * @param {String} phoneNumber\n * @returns Boolean\n */\nfunction isInternationalPhoneNumber(phoneNumber) {\n var trimedPhoneNumber = phoneNumber.trim();\n if (trimedPhoneNumber[0] === \"+\") {\n return true;\n }\n return false;\n}\nvar countryAliasMapping = {\n C2: \"CN\",\n UK: \"GB\"\n};\nfunction getResolvedRegion(region) {\n return countryAliasMapping[region] || region;\n}\nvar styleValues = [\"national\", \"international\", \"e164\", \"rfc3966\"];\nvar PhoneNumberFormat = /*#__PURE__*/function () {\n function PhoneNumberFormat(options) {\n if (process.env.NODE_ENV !== \"production\") {\n assertType(options, \"options\", [\"undefined\", \"plain object\"]);\n options = options || {};\n if (isWorldReadyInstance(options) || options.region) {\n var _phoneRegion = options.region;\n delete options.region;\n throw new Error(\"DEPRECATED: PhoneNumberFormat API has changed for consistency with other formatters, see our updated docs for more information.\\nFix your code by using:\\n\" + (\"new PhoneNumberFormat(\" + JSON.stringify(Object.assign({\n phoneRegion: _phoneRegion\n }, options || {})) + \");\"));\n }\n if (options.phoneRegion !== undefined) {\n assertTwoLetterString(options.phoneRegion, \"options.phoneRegion\");\n }\n if (options.style) {\n if ([\"nationalObscured\", \"internationalObscured\"].includes(options.style)) {\n var newOptions = Object.assign({}, options, {\n style: options.style.substring(0, options.style.indexOf(\"Obscured\"))\n });\n throw new Error(\"DEPRECATED: PhoneNumberFormat API has changed for consistency with other formatters, see our updated docs for more information.\\nFix your code by using:\\n\" + (\"new PhoneNumberFormat(\" + JSON.stringify(Object.assign({\n obscure: true\n }, newOptions || {})) + \");\"));\n }\n assertRange(options.style, styleValues, \"Invalid value for options.style: {style}\", {\n style: options.style\n });\n }\n if (options.obscure) {\n assertType(options.obscure, \"options.obscure\", [\"undefined\", \"boolean\"]);\n }\n }\n var _ref2 = options || {},\n _ref2$style = _ref2.style,\n style = _ref2$style === void 0 ? \"national\" : _ref2$style,\n _ref2$obscure = _ref2.obscure,\n obscure = _ref2$obscure === void 0 ? false : _ref2$obscure;\n var phoneRegion = getResolvedRegion(options.phoneRegion);\n var metadata, regionGroups;\n if (phoneRegion) {\n var phoneRegionMetadata = getMetadata(phoneRegion);\n metadata = phoneRegionMetadata.metadata;\n regionGroups = phoneRegionMetadata.regionGroups;\n } else {\n metadata = getAllMetadata();\n }\n var fullStackPhoneHandler = createPhoneHandler(metadata);\n this.phoneFormatter = function (phoneObj) {\n return formatPhone(phoneObj, fullStackPhoneHandler, style, obscure);\n };\n this.phoneParser = function (phoneNumber) {\n if (!isInternationalPhoneNumber(phoneNumber)) {\n checkPhoneRegionError(phoneRegion);\n }\n return parsePhone(phoneNumber, phoneRegion, fullStackPhoneHandler, regionGroups);\n };\n this.phoneFormatterAsTyped = function (phoneNumber) {\n checkPhoneRegionError(phoneRegion);\n var formatter = fullStackPhoneHandler.getAsYouTypeFormatter(phoneRegion);\n var output = \"\";\n phoneNumber.split(\"\").forEach(function (char) {\n output = formatter.inputDigit(char);\n });\n return output;\n };\n this._runtimeArgs = [options];\n this._runtimeValue = {\n metadata: metadata,\n regionGroups: regionGroups\n };\n }\n var _proto = PhoneNumberFormat.prototype;\n _proto.format = function format(phoneObj) {\n if (process.env.NODE_ENV !== \"production\") {\n assertType(phoneObj, \"phoneObj\", [\"plain object\"]);\n assertPhoneObjType(phoneObj);\n }\n return this.phoneFormatter(phoneObj);\n };\n _proto.parse = function parse(localizedPhoneString) {\n if (process.env.NODE_ENV !== \"production\") {\n assertType(localizedPhoneString, \"localizedPhoneString\", [\"string\"]);\n }\n localizedPhoneString = localizedPhoneString.trim();\n return this.phoneParser(localizedPhoneString);\n };\n _proto.formatAsTyped = function formatAsTyped(localizedPhoneString) {\n if (process.env.NODE_ENV !== \"production\") {\n assertType(localizedPhoneString, \"localizedPhoneString\", [\"string\"]);\n }\n return this.phoneFormatterAsTyped(localizedPhoneString);\n };\n PhoneNumberFormat.inferPhoneNumberRegion = function inferPhoneNumberRegion(phoneObj) {\n if (process.env.NODE_ENV !== \"production\") {\n assertType(phoneObj, \"phoneObj\", [\"plain object\"]);\n assertPhoneObjType(phoneObj);\n }\n var fullStackPhoneHandler = createPhoneHandler(getAllMetadata());\n try {\n return fullStackPhoneHandler.inferPhoneNumberRegion(phoneObj);\n } catch (error) {\n throw globalizeToWorldReadyError(error);\n }\n };\n PhoneNumberFormat.inferPhoneNumberType = function inferPhoneNumberType(phoneObj) {\n if (process.env.NODE_ENV !== \"production\") {\n assertType(phoneObj, \"phoneObj\", [\"plain object\"]);\n assertPhoneObjType(phoneObj);\n }\n var fullStackPhoneHandler = createPhoneHandler(getAllMetadata());\n try {\n return fullStackPhoneHandler.inferPhoneNumberType(phoneObj);\n } catch (error) {\n throw globalizeToWorldReadyError(error);\n }\n };\n PhoneNumberFormat.getCallingCodeForRegions = function getCallingCodeForRegions(regions) {\n if (regions === void 0) {\n regions = [];\n }\n if (process.env.NODE_ENV !== \"production\") {\n assertType(regions, \"regions\", [\"array\"]);\n }\n try {\n var regionToCallingCodesMapping = {};\n regions.map(function (region) {\n var _getMetadata = getMetadata(getResolvedRegion(region)),\n metadata = _getMetadata.metadata;\n var allSupportCallingCodeForRegion = Object.keys(metadata.countryCodeToRegionCodeMap);\n regionToCallingCodesMapping[region] = allSupportCallingCodeForRegion;\n });\n return regionToCallingCodesMapping;\n } catch (error) {\n throw globalizeToWorldReadyError(error);\n }\n };\n return PhoneNumberFormat;\n}();\nfunction assertPhoneObjType(_ref3) {\n var countryCode = _ref3.countryCode,\n nationalNumber = _ref3.nationalNumber,\n extension = _ref3.extension;\n // Check well-formedness of countryCode (should be integer or string representation thereof)\n assertCanonicalInteger(countryCode, \"phoneObj.countryCode\");\n\n // Check well-formedness of nationalNumber (should be integer or string representation thereof)\n assertCanonicalInteger(nationalNumber, \"phoneObj.nationalNumber\");\n\n // Check well-formedness of extension (if provided, should be string or number)\n if (extension !== undefined) {\n // extension is optional\n assertType(extension, \"phoneObj.extension\", [\"string\", \"number\"]);\n }\n}\nfunction assertCanonicalInteger(parameter, parameterName) {\n // ensure that parameter is an integer or a string representation of an integer\n // and disallow empty strings\n assertType(parameter, parameterName, [], {\n condition: parameter !== \"\" && (typeof parameter === \"string\" || typeof parameter === \"number\") && isInteger(Number(parameter)),\n errorMessage: 'Parameter `{parameterName}` must be an integer or a string representation of an integer (e.g, `\"12345\"`), not {parameterType} `{{parameterValue}}`'\n });\n}\nfunction assertTwoLetterString(parameter, parameterName) {\n assertType(parameter, parameterName, [], {\n condition: typeof parameter === \"string\" && parameter.length === 2,\n errorMessage: \"Parameter `{parameterName}` must be a two-letter string, not {parameterType} `{{parameterValue}}`\"\n });\n}\nfunction isInteger(x) {\n return Math.round(x) === x;\n}\n\nexport { PhoneNumberFormat };\n","import 'core-js/modules/es.object.keys';\nimport { assertType, assertRange } from 'yaassertion';\n\nvar Cldr = require('cldrjs/dist/cldr');\nvar countryAliasMapping = {\n C2: \"CN\",\n UK: \"GB\"\n};\nfunction getResolvedRegion(region) {\n return countryAliasMapping[region] || region;\n}\nvar getMissingMetadataError = function getMissingMetadataError(path) {\n var message = \"Missing WorldReady metadata, please refer to https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about-load-worldready-data.html\";\n if (path) {\n message += \"\\nPath: \" + path;\n }\n return new Error(message);\n};\nfunction validateCldr(path, value, options) {\n if (options === void 0) {\n options = {\n skip: []\n };\n }\n var skipBoolean = options.skip.some(function (regex) {\n return regex.test(path);\n });\n if (skipBoolean) {\n return;\n }\n if (value === undefined) {\n throw getMissingMetadataError(path);\n }\n}\n\n/**\n * ExampleGenerator(options)\n */\nvar ExampleGenerator = /*#__PURE__*/function () {\n function ExampleGenerator(options) {\n if (options === void 0) {\n options = {};\n }\n if (process.env.NODE_ENV !== \"production\") {\n assertType(options, \"options\", [\"undefined\", \"plain object\"]);\n assertType(options.feature, \"options.feature\", [\"string\"]);\n assertRange(options.feature, [\"phone\"], \"options.feature must be 'phone'\");\n if (options.feature === \"phone\") {\n var cldr = new Cldr(\"und\");\n cldr.on(\"get\", validateCldr);\n var phoneTypes;\n try {\n phoneTypes = cldr.get([\"supplemental/example/phoneData/phoneTypes\"]);\n } finally {\n cldr.off(\"get\", validateCldr);\n }\n assertRange(options.type, Object.keys(phoneTypes), \"Invalid value for phone number type: {type}\", {\n type: options.type\n });\n }\n }\n var region = options.region;\n if (region) {\n region = getResolvedRegion(region);\n }\n switch (options.feature) {\n case \"phone\":\n this.get = function () {\n var cldr = new Cldr(\"und\");\n cldr.on(\"get\", validateCldr);\n var nationalNumbers, phoneTypes, countryCodes;\n try {\n nationalNumbers = cldr.get([\"supplemental/example/phoneData/nationalNumbers/\" + region]);\n phoneTypes = cldr.get([\"supplemental/example/phoneData/phoneTypes\"]);\n countryCodes = cldr.get(\"supplemental/phoneData/callingCode\");\n } finally {\n cldr.off(\"get\", validateCldr);\n }\n var nationalNumber = nationalNumbers[phoneTypes[options.type]];\n if (!nationalNumber)\n // return same data type that fullstackphone does\n return null;\n return {\n nationalNumber: nationalNumber,\n countryCode: countryCodes[region]\n };\n };\n break;\n }\n }\n var _proto = ExampleGenerator.prototype;\n _proto.generate = function generate() {\n return this.get();\n };\n return ExampleGenerator;\n}();\n\nexport { ExampleGenerator };\n","import 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.join';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.includes';\nimport 'core-js/modules/es.string.split';\nimport { WorldReady, isWorldReadyInstance } from '@paypalcorp/worldready-core';\nimport { assertType, assert } from 'yaassertion';\nimport 'globalize/dist/globalize/number';\nimport 'globalize/dist/globalize/date';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nvar _excluded = [\"style\"];\nvar DATE_STYLES = {\n DATE_SHORT: \"date-short\",\n BANK_CARD_EXPIRY: \"bank-card-expiry\",\n TIMEZONE_SHORT: \"timezone-short\",\n TIMEZONE_MEDIUM: \"timezone-medium\",\n TIMEZONE_LONG: \"timezone-long\"\n};\nvar BANK_CARD_EXPIRY_FORMAT = \"MM/YY\";\nvar TIMEZONE_FORMATS = {\n TIMEZONE_LONG_FORMAT: \"(OOOO) vvvv (VVV)\",\n TIMEZONE_MEDIUM_FORMAT: \"(OOOO) vvvv\",\n TIMEZONE_SHORT_FORMAT: \"(OOOO) v\"\n};\nvar ERROR_CODES = {\n E_MISSING_CLDR: \"E_MISSING_CLDR\",\n E_MISSING_IANA_TZ: \"E_MISSING_IANA_TZ\"\n};\n\n/**\n * Modified globalizeDateOptions based on date styles and formats\n * @param {optionsWithDefaults, globalizeDateOptions, aux}\n * @return {globalizeDateOptions}\n */\nfunction getGlobalizeDateOptions(optionsWithDefaults, globalizeDateOptions, aux) {\n switch (optionsWithDefaults.style) {\n case DATE_STYLES.BANK_CARD_EXPIRY:\n globalizeDateOptions[\"raw\"] = BANK_CARD_EXPIRY_FORMAT;\n globalizeDateOptions.timeZone = optionsWithDefaults.timeZone;\n return globalizeDateOptions;\n case DATE_STYLES.TIMEZONE_LONG:\n globalizeDateOptions[\"raw\"] = TIMEZONE_FORMATS.TIMEZONE_LONG_FORMAT;\n globalizeDateOptions.timeZone = optionsWithDefaults.timeZone;\n return globalizeDateOptions;\n case DATE_STYLES.TIMEZONE_MEDIUM:\n globalizeDateOptions[\"raw\"] = TIMEZONE_FORMATS.TIMEZONE_MEDIUM_FORMAT;\n globalizeDateOptions.timeZone = optionsWithDefaults.timeZone;\n return globalizeDateOptions;\n case DATE_STYLES.TIMEZONE_SHORT:\n globalizeDateOptions[\"raw\"] = TIMEZONE_FORMATS.TIMEZONE_SHORT_FORMAT;\n globalizeDateOptions.timeZone = optionsWithDefaults.timeZone;\n return globalizeDateOptions;\n default:\n if (optionsWithDefaults.style.includes(\"-\")) {\n aux = optionsWithDefaults.style.split(\"-\");\n globalizeDateOptions[aux[0]] = aux[1];\n } else {\n globalizeDateOptions.skeleton = optionsWithDefaults.style;\n }\n globalizeDateOptions.timeZone = optionsWithDefaults.timeZone;\n return globalizeDateOptions;\n }\n}\nvar getMissingMetadataError = function getMissingMetadataError(path) {\n var message = \"Missing WorldReady metadata, please refer to https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about-load-worldready-data.html\";\n if (path) {\n message += \"\\nPath: \" + path;\n }\n return new Error(message);\n};\nfunction globalizeToWorldReadyError(error) {\n if (error.code === \"E_MISSING_CLDR\") {\n return getMissingMetadataError(error.stack);\n }\n return new Error([\"Oops, internal error\", error.message, error.stack].join(\"\\n\"));\n}\nfunction getWorldReadyDateError(error, options) {\n if (options === void 0) {\n options = {};\n }\n var WORLDREADY_DATE_ERROR_CODES = {\n E_INVALID_OPTIONS: \"E_INVALID_OPTIONS\",\n E_MISSING_IANA_TZ: \"E_MISSING_IANA_TZ\"\n };\n if (error.code === WORLDREADY_DATE_ERROR_CODES.E_INVALID_OPTIONS) {\n throw new RangeError(\"Invalid `options.style`: `\" + JSON.stringify(error.value) + \"`.\");\n } else if (error.code === WORLDREADY_DATE_ERROR_CODES.E_MISSING_IANA_TZ) {\n throw new Error(\"Missing required timezone metadata. Make sure that you are exporting metadata for \\\"\" + options.timeZone + \"\\\" using WorldReady.export API.\");\n }\n throw globalizeToWorldReadyError(error);\n}\n\n/**\n * DateTimeFormat(worldReady, options)\n */\nvar DateTimeFormat = /*#__PURE__*/function () {\n function DateTimeFormat(worldReady, options) {\n if (options === void 0) {\n options = {};\n }\n // Error checking\n if (process.env.NODE_ENV !== \"production\") {\n assert(isWorldReadyInstance(worldReady), \"WorldReady object missing.\");\n assertType(options, \"options\", [\"plain object\"]);\n assertType(options.style, \"options.style\", [\"string\", \"undefined\"]);\n assertType(options.timeZone, \"options.timeZone\", [\"string\"]);\n }\n this.dateOptions = globalizeDateOptions(options);\n this.locale = worldReady.locale;\n this.globalize = worldReady.globalize;\n\n // Check if required metadata for locale & timezone is present or not\n var cldr = worldReady.globalize.cldr;\n var datesMetadata = cldr.main(\"dates\");\n if (!datesMetadata) {\n var err = new Error();\n err.code = ERROR_CODES.E_MISSING_CLDR;\n throw getWorldReadyDateError(err);\n }\n var timezones = options.timeZone.split(\"/\");\n var timezoneMetadata = cldr.get([\"globalize-iana/zoneData\"].concat(timezones));\n if (!timezoneMetadata) {\n var _err = new Error();\n _err.code = ERROR_CODES.E_MISSING_IANA_TZ;\n throw getWorldReadyDateError(_err, {\n timeZone: options.timeZone\n });\n }\n }\n var _proto = DateTimeFormat.prototype;\n _proto.format = function format(date) {\n if (!isValidDate(date)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new TypeError(\"Invalid Date was provided with value: \" + date);\n }\n return NaN;\n }\n try {\n this.dateFormatter = getDateFormatter({\n locale: this.locale,\n options: this.dateOptions,\n globalize: this.globalize\n });\n return this.dateFormatter(date);\n } catch (error) {\n throw getWorldReadyDateError(error);\n }\n };\n _proto.formatToParts = function formatToParts(date) {\n if (!isValidDate(date)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new TypeError(\"Invalid Date was provided with value: \" + date);\n }\n return NaN;\n }\n try {\n this.dateToPartsFormatter = getDateToPartsFormatter({\n locale: this.locale,\n options: this.dateOptions,\n globalize: this.globalize\n });\n return this.dateToPartsFormatter(date);\n } catch (error) {\n throw getWorldReadyDateError(error);\n }\n };\n _proto.parse = function parse(localizedDate) {\n if (process.env.NODE_ENV !== \"production\") {\n assertType(localizedDate, \"localizedDate\", [\"string\"]);\n }\n try {\n this.dateParser = getDateParser({\n locale: this.locale,\n options: this.dateOptions,\n globalize: this.globalize\n });\n return this.dateParser(localizedDate);\n } catch (error) {\n throw getWorldReadyDateError(error);\n }\n };\n return DateTimeFormat;\n}();\nfunction getDateFormatter(data) {\n if (data === void 0) {\n data = {};\n }\n var _data = data,\n locale = _data.locale,\n options = _data.options,\n globalize = _data.globalize;\n var key = \"dateFormatter\" + JSON.stringify({\n locale: locale,\n options: options\n });\n if (!WorldReady.cache.get(key)) {\n WorldReady.cache.set(key, globalize.dateFormatter(options));\n }\n return WorldReady.cache.get(key);\n}\nfunction getDateToPartsFormatter(data) {\n if (data === void 0) {\n data = {};\n }\n var _data2 = data,\n locale = _data2.locale,\n options = _data2.options,\n globalize = _data2.globalize;\n var key = \"dateToPartsFormatter\" + JSON.stringify({\n locale: locale,\n options: options\n });\n if (!WorldReady.cache.get(key)) {\n WorldReady.cache.set(key, globalize.dateToPartsFormatter(options));\n }\n return WorldReady.cache.get(key);\n}\nfunction getDateParser(data) {\n if (data === void 0) {\n data = {};\n }\n var _data3 = data,\n locale = _data3.locale,\n options = _data3.options,\n globalize = _data3.globalize;\n var key = \"dateParser\" + JSON.stringify({\n locale: locale,\n options: options\n });\n if (!WorldReady.cache.get(key)) {\n WorldReady.cache.set(key, globalize.dateParser(options));\n }\n return WorldReady.cache.get(key);\n}\nfunction globalizeDateOptions(options) {\n var aux;\n var globalizeDateOptions = {};\n\n // Set Defaults\n var _options$style = options.style,\n style = _options$style === void 0 ? DATE_STYLES.DATE_SHORT : _options$style,\n otherProps = _objectWithoutPropertiesLoose(options, _excluded);\n var optionsWithDefaults = Object.assign({\n style: style\n }, otherProps);\n globalizeDateOptions = getGlobalizeDateOptions(optionsWithDefaults, globalizeDateOptions, aux);\n return globalizeDateOptions;\n}\n/**\n * Validates if date is valid Date object.\n * Due that one of the values returned by new Date() function could be `Invalid Date` which is actually a valid Date object\n * We are also validating date parameter is a valid number.\n * @param {Date} date\n * @returns {Boolean}\n */\n\nfunction isValidDate(date) {\n return date instanceof Date && !isNaN(date);\n}\n\nexport { DateTimeFormat };\n","import React, { useContext } from 'react';\nimport { MessageFormat, CurrencyFormat, DisplayNames, PhoneNumberFormat, AddressFormat, ExampleGenerator, DateTimeFormat } from '@paypalcorp/worldready';\nimport { Context } from '@paypalcorp/worldready-react';\nimport { IntlProvider } from '@paypalcorp/pp-react-intl';\n\nvar WorldReadyProvider = function (_ref) {\n var worldReady = _ref.worldReady,\n children = _ref.children;\n var worldReadObjFromContext = useContext(Context);\n var worldReadyObj = worldReady || worldReadObjFromContext;\n var intlProviderProps = {\n locale: worldReadyObj.locale,\n messageFormatter: function messageFormatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new MessageFormat(worldReadyObj, options);\n },\n currencyFormatter: function currencyFormatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new CurrencyFormat(worldReadyObj, options);\n },\n getDisplayNamesObject: function getDisplayNamesObject() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new DisplayNames(worldReadyObj, options);\n },\n phoneFormatter: function phoneFormatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new PhoneNumberFormat(options);\n },\n addressFormatter: function addressFormatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new AddressFormat(worldReadyObj, options);\n },\n exampleGenerator: function exampleGenerator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new ExampleGenerator(options);\n },\n dateTimeFormatter: function dateTimeFormatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new DateTimeFormat(worldReadyObj, options);\n },\n worldReadyObj: worldReadyObj\n };\n return /*#__PURE__*/React.createElement(IntlProvider, intlProviderProps, children);\n};\n\nexport { WorldReadyProvider };\n","import 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.find';\nimport 'core-js/modules/es.array.from';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.iterator';\nimport 'core-js/modules/es.array.join';\nimport 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.array.slice';\nimport 'core-js/modules/es.function.name';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.object.entries';\nimport 'core-js/modules/es.object.keys';\nimport 'core-js/modules/es.object.to-string';\nimport 'core-js/modules/es.object.values';\nimport 'core-js/modules/es.regexp.constructor';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.regexp.flags';\nimport 'core-js/modules/es.regexp.to-string';\nimport 'core-js/modules/es.set';\nimport 'core-js/modules/es.string.includes';\nimport 'core-js/modules/es.string.iterator';\nimport 'core-js/modules/es.string.match';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.split';\nimport 'core-js/modules/es.string.trim';\nimport 'core-js/modules/web.dom-collections.for-each';\nimport 'core-js/modules/web.dom-collections.iterator';\nimport { isWorldReadyInstance } from '@paypalcorp/worldready-core';\nimport { assert, assertType, assertRange } from 'yaassertion';\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar Cldr = require('cldrjs/dist/cldr');\n\n/**\n * Utility function to remove literals that are not required.\n * We only want to add a literal if we've previously encountered a non-literal field\n * and it's value is not an empty string. Hence we don't add a literal field to the\n * response immediately as we encounter it, but we wait until we see the next non-literal\n * field before adding the literal to our response.\n * @param {Array} parts an array with details about each part. Required props for each part are:\n * type: a string specifying whether the part is literal or not\n * value: value for that part\n * @returns {Array} modified array where unnecessary literals are removed\n */\nfunction removeExtraLiterals(parts) {\n if (parts === void 0) {\n parts = [];\n }\n if (!parts || !parts.length) {\n return;\n }\n var addedFirstNonLiteralField = false,\n literalField = null,\n result = [];\n parts.forEach(function (part) {\n if (part.type !== \"literal\") {\n if (literalField && addedFirstNonLiteralField && part.value.length) {\n result.push(literalField);\n }\n literalField = null;\n result.push(part);\n if (part.value.length) {\n addedFirstNonLiteralField = true;\n }\n } else {\n literalField = Object.assign({}, part);\n }\n });\n return result;\n}\nfunction cloneArray(array) {\n return array.slice(0);\n}\nfunction cloneDate(date) {\n return new Date(date.getTime());\n}\n\n/**\n * Deeply merges plain objects.\n *\n * Eg.\n * objectDeepAssign( { a: { b: 1, c: 2 } }, { a: { b: 3, d: 4 } }, ... )\n * -> { a: { b: 3, c: 2, d: 4 } }\n *\n * Code from https://github.com/rxaviers/cldrjs/blob/master/src/util/json/merge.js\n */\nfunction objectDeepAssign(destination) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n sources.forEach(function (source) {\n var prop;\n for (prop in source) {\n if (Array.isArray(source[prop])) {\n // Clone and set arrays.\n destination[prop] = cloneArray(source[prop]);\n } else if (source[prop] instanceof Date) {\n // Clone and set dates.\n destination[prop] = cloneDate(source[prop]);\n } else if (typeof source[prop] === \"object\") {\n // Merge objects.\n destination[prop] = objectDeepAssign({}, destination[prop], source[prop]);\n } else {\n // Set new values.\n destination[prop] = source[prop];\n }\n }\n });\n return destination;\n}\n\n/* Gets value in object path\n * @param {object} obj\n * @param {string|array} path\n * @examples\n * get({foo: 1, bar: {baz: 2}}, 'bar.baz');\n * > 2\n * get({foo: 1, bar: {baz: 2}}, 'foo.bar.baz.quax');\n * > undefined\n * NOTE: Asterisk support for Node.js only (reduced bytes)\n */\nvar objectGet;\n{\n // Client-side\n objectGet = function objectGet(obj, path) {\n if (typeof path === \"string\") {\n path = path.split(\".\");\n }\n if (!path.length) {\n return obj;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (path.some(function (part) {\n return part === \"*\";\n })) {\n throw new Error(\"Internal error: objectGet asterisk support NOT available\");\n }\n }\n var prop = path.slice(-1);\n var node = path.slice(0, -1).reduce(function (node, item) {\n return node[item] || {};\n }, obj);\n return node[prop];\n };\n}\n\n/**\n * Actual PersonNameFormat implementation. The idea is the this whole file\n * becomes open source.\n */\n\n/**\n * Given:\n * - stringLayout: \"{foo} {bar}\"\n * - stringLayouts:\n * {\n * \"bar\": \"{a} {b.c}\"\n * }\n * Returns:\n * [\n * {\n * \"type\": \"foo\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"bar\",\n * \"parts\": [\n * {\n * \"type\": \"a\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"b.c\"\n * }\n * ]\n * }\n * ]\n */\n// TODO: Find a better place for common functions between address and name\nfunction stringLayoutToPartsLayout(stringLayout, stringLayouts, checkStringLayouts) {\n if (stringLayouts === void 0) {\n stringLayouts = {};\n }\n if (checkStringLayouts === void 0) {\n checkStringLayouts = true;\n }\n var partsLayout = [];\n var lastMatchPos = 0;\n\n // For every matching variable (e.g., \"{foo}\"), add two parts: the literal\n // that precedes it and the matching type variable (e.g., { type: \"foo\" }).\n stringLayout.replace(/{[^}]+}/g, function (match, pos) {\n partsLayout.push({\n type: \"literal\",\n value: stringLayout.slice(lastMatchPos, pos)\n });\n var type = match.slice(1, -1);\n var part = {\n type: type\n };\n if (checkStringLayouts && stringLayouts[type]) {\n part.parts = stringLayoutToPartsLayout(stringLayouts[type], stringLayouts, false);\n }\n partsLayout.push(part);\n lastMatchPos = pos + match.length;\n });\n partsLayout.push({\n type: \"literal\",\n value: stringLayout.slice(lastMatchPos)\n });\n\n // Remove empty literals.\n return partsLayout.filter(function (_ref) {\n var type = _ref.type,\n value = _ref.value;\n return type !== \"literal\" || value;\n });\n}\nvar DEFAULT_SCRIPT_FALLBACK = \"Latn\";\n/**\n * Returns the object script, which is:\n * - `undefined` if the string is empty,\n * - `\"Latin\"` if the whole string is Latin, or\n * - The regionDefaultScript if string contains any non-Latin (because it's easier to do this than to\n * identify which script it really is AND it's assertive in our case).\n */\nfunction getStringScript(string, regionDefaultScript) {\n if (!string.length) {\n return;\n }\n for (var _iterator = _createForOfIteratorHelperLoose(string), _step; !(_step = _iterator()).done;) {\n var ch = _step.value;\n if (ch.charCodeAt(0) > 0x24f) {\n return regionDefaultScript;\n }\n }\n return \"Latn\";\n}\n\n/**\n * Helper function that determines what script should be used to format the address and name.\n * Determination rules and fallbacks are as follows:\n * 1. For address region with region default script as non Latn script and if address/name object contain non Latn script characters, then use non Latn script if supported by address region.\n * 2. If address object scipt is not supported for addressRegion or we don't have the metadata for that script,\n * then fallback to the primary_script for addressRegion identified in G11nMetadata\n * 3. if for some reason we don't have address layout metadata for the primary_script identified in G11nMetadata for primary_script,\n * then fallback to 'Latn' as we always have address layout for Latn script\n * @param {Object} stringLayouts an object containing layouts for all the scripts for addressRegion\n * @param {Object} options object with additional properties for identifying the final script that should be used\n * @returns {Object} an object with the address layout based on script identified by above rules\n */\nvar getLayoutFromScript = function getLayoutFromScript(stringLayouts, options) {\n if (stringLayouts === void 0) {\n stringLayouts = {};\n }\n if (options === void 0) {\n options = {};\n }\n if (!Object.keys(stringLayouts).length || !options.primaryScript) {\n return null;\n }\n var _options = options,\n finalScript = _options.finalScript,\n primaryScript = _options.primaryScript;\n return stringLayouts[finalScript] || stringLayouts[primaryScript] || stringLayouts[DEFAULT_SCRIPT_FALLBACK];\n};\n\n/**\n * Actual PersonNameFormat implementation. The idea is the this whole file\n * becomes open source.\n */\n\nvar properties = [\"namePrefix\", \"givenName\", \"middleName\", \"surname\", \"secondSurname\", \"nameSuffix\", \"altName\"];\n\n/**\n * isProperty is a hash of the form: { : true }, which makes easier to\n * check if a string is one of the properties listed above.\n */\nvar isProperty = Object.assign.apply(Object, properties.map(function (field) {\n var _ref2;\n return _ref2 = {}, _ref2[field] = true, _ref2;\n}));\n\n/**\n * Actual formatToParts function.\n *\n * @param {String} name Person name\n * @param {Object} options.layout Metadata for the chosen style, e.g.:\n * {\n * \"Latn\": [\n * {\n * \"type\": \"givenName\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"surname\"\n * }\n * ]\n * }\n * @param {String} options.regionDefaultScript Region default script\n * @param {String} options.script Locale script\n * @param {Object} options.supportedScripts Supported scripts array.\n *\n * @return {Array} Formatted person name parts.\n */\nfunction formatToParts(name, _ref3) {\n var layouts = _ref3.layouts,\n regionDefaultScript = _ref3.regionDefaultScript,\n localeScript = _ref3.localeScript,\n supportedScripts = _ref3.supportedScripts,\n requiredPropsArray = _ref3.requiredPropsArray,\n formatAs = _ref3.formatAs,\n nameFormatData = _ref3.nameFormatData;\n var nameScript;\n\n // Optimization:\n // If the region default script is different than \"Latn\", check address.\n // Otherwise, not needed, it's always going to be \"Latn\".\n if (regionDefaultScript === \"Latn\") {\n nameScript = \"Latn\";\n } else {\n nameScript = getStringScript(Object.entries(name).filter(function (_ref4) {\n var type = _ref4[0];\n return isProperty[type];\n }).map(function (_ref5) {\n var value = _ref5[1];\n return value;\n }).join(\"\"), regionDefaultScript);\n }\n\n // The nameScript has precedence. In case address is empty (and therefore nameScript is\n // undefined), use locale script if it's supported\n // by the region OR Latin.\n var finalScript = nameScript || (supportedScripts.includes(localeScript) ? localeScript || regionDefaultScript : \"Latn\");\n\n // The name script determines the layout (e.g., latin vs Japanese), but the\n // user region determines the supported scripts (e.g., on US only latin names\n // are supported, on JP both latin and Japanese are supported).\n // TODO Transform at constructor-time.\n var stringLayout = getLayoutFromScript(layouts, {\n primaryScript: regionDefaultScript,\n finalScript: finalScript\n });\n var layout = stringLayoutToPartsLayout(stringLayout);\n var parts = getPartsFromLayout(layout, {\n name: name,\n requiredPropsArray: requiredPropsArray\n });\n\n // remove unwanted literals\n parts = removeExtraLiterals(parts);\n\n // apply required formatting (e.g., title case)\n parts.forEach(function (part) {\n if (part.type !== \"literal\") {\n if (formatAs) {\n part.value = applyFormatting(part.value, formatAs, {\n nameFormatData: nameFormatData\n });\n }\n }\n });\n return parts;\n}\n\n/**\n * This version might be used in for loops and the like when\n * it is unknown whether non-BMP characters exist before the specified index position.\n * Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n * @param {string} string to get the character\n * @peram {number} the index position\n **/\nfunction fixedCharCodeAt(str, idx) {\n // ex. fixedCharCodeAt('\\uD800\\uDC00', 0); // 65536\n // ex. fixedCharCodeAt('\\uD800\\uDC00', 1); // false\n idx = idx || 0;\n var code = str.charCodeAt(idx);\n var hi, low;\n\n // High surrogate (could change last hex to 0xDB7F\n // to treat high private surrogates\n // as single characters)\n if (0xd800 <= code && code <= 0xdbff) {\n hi = code;\n low = str.charCodeAt(idx + 1);\n if (isNaN(low)) {\n return hi;\n }\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n if (0xdc00 <= code && code <= 0xdfff) {\n // Low surrogate\n // We return false to allow loops to skip\n // this iteration since should have already handled\n // high surrogate above in the previous iteration\n return false;\n // hi = str.charCodeAt(idx - 1);\n // low = code;\n // return ((hi - 0xD800) * 0x400) +\n // (low - 0xDC00) + 0x10000;\n }\n return code;\n}\nfunction convertToHex(charCode) {\n var result = \"\";\n var hex = charCode.toString(16);\n if (hex.length > 4) {\n result += \"U+\" + hex;\n } else {\n result += \"U+\" + (\"00\" + hex).slice(-4);\n }\n result = result.toUpperCase();\n return result;\n}\nfunction invalidCodePointFromString(string, regex) {\n var codePoint;\n for (var i = 0, chr; i < string.length; i++) {\n if (string[i].match(regex) === null) {\n if ((chr = fixedCharCodeAt(string, i)) === false) {\n continue;\n }\n codePoint = chr;\n /* we care only on the first one */\n break;\n }\n }\n return codePoint ? convertToHex(codePoint) : undefined;\n}\nfunction getPartsFromLayout(layout, options) {\n if (options === void 0) {\n options = {};\n }\n if (!layout) {\n return;\n }\n var _options2 = options,\n name = _options2.name,\n requiredPropsArray = _options2.requiredPropsArray;\n return layout.map(function (_ref6) {\n var type = _ref6.type,\n value = _ref6.value;\n if (type !== \"literal\") {\n value = name[type] || \"\";\n }\n return Object.assign({\n type: type,\n value: value\n }, type !== \"literal\" && {\n required: requiredPropsArray.includes(type) ? true : false\n });\n });\n}\n\n/**\n * Helper function to apply different kind of formatting to name field.\n * Following are the types of formatters are currently applied:\n * - titleCase\n * @param {String} nameField name field on which formatting needs to be applied\n * @param {Object} formatAs object indicating what kind of formatting should be applied\n * @param {Object} options param to pass in additional metadata needed for formatting\n * @returns {String}\n */\nfunction applyFormatting(nameField, formatAs, options) {\n if (formatAs === void 0) {\n formatAs = {};\n }\n if (options === void 0) {\n options = {};\n }\n if (!nameField || !formatAs) {\n return nameField;\n }\n var formattedValue = nameField;\n if (formatAs.titleCase) {\n formattedValue = transformNameFieldToTitleCase(formattedValue, options);\n }\n return formattedValue;\n}\n\n/**\n * Helper function to convert name field to title case. E.g,\n * joHN --> John\n * doe --> Doe\n * @param {String} nameField Value that needs to be converted to title case\n * @returns {String}\n */\nfunction transformNameFieldToTitleCase(nameField, options) {\n if (options === void 0) {\n options = {};\n }\n if (!nameField) {\n return nameField;\n }\n var result = nameField;\n var _options3 = options,\n _options3$nameFormatD = _options3.nameFormatData.titleCase,\n PUNCTUATIONS = _options3$nameFormatD.PUNCTUATIONS,\n ALL_LOWER_CASE = _options3$nameFormatD.ALL_LOWER_CASE,\n GAELIC_TERMS = _options3$nameFormatD.GAELIC_TERMS;\n if (!PUNCTUATIONS || !PUNCTUATIONS.pattern || !ALL_LOWER_CASE || !ALL_LOWER_CASE.pattern || !GAELIC_TERMS || !GAELIC_TERMS.pattern) {\n return nameField;\n }\n\n // the unicode range of characters check to find punctuations in all locales\n result = result.replace(new RegExp(PUNCTUATIONS.pattern, PUNCTUATIONS.flags), function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n });\n\n // for names like Mc, Mac\n result = result.replace(new RegExp(GAELIC_TERMS.pattern, GAELIC_TERMS.flags), function ($1, $2, $3, $4, $5) {\n return $2 ? $3.toUpperCase() + $4 + $5.toUpperCase() : $1;\n });\n\n // for names like Picaso de Casa Seville Guiterrez\n result = result.replace(new RegExp(ALL_LOWER_CASE.pattern, ALL_LOWER_CASE.flags), function (_, match) {\n return match.toLowerCase();\n });\n return result;\n}\nvar NAME_TYPES = {\n PERSON: \"person\",\n BUSINESS: \"business\"\n};\nvar NAME_STYLES = {\n FULL: \"full\",\n INFORMAL: \"informal\",\n BUSINESS_INFORMAL: \"businessInformal\"\n};\nvar DEFAULT_FORMATAS = {\n titleCase: false\n};\nvar REGISTERED_BUSINESS_TYPE_KEY_MAP = {\n \"NON-REGISTERED-BUSINESS\": \"nonRegistered\",\n \"REGISTERED-BUSINESS\": \"registered\"\n};\nvar NAME_ERROR_CODE = {\n MISSING_REQUIRED: \"MISSING_REQUIRED\",\n INVALID_SCRIPT: \"INVALID_SCRIPT\",\n INVALID_ALL_PUNCTUATION: \"INVALID_ALL_PUNCTUATION\",\n INVALID_ALL_NUMBER: \"INVALID_ALL_NUMBER\",\n INVALID_ALL_RESTRICTED: \"INVALID_ALL_RESTRICTED\",\n INVALID_ALL_REGISTERED_ACCOUNT: \"INVALID_ALL_REGISTERED_ACCOUNT\",\n INVALID_MAX_LENGTH_EXCEEDED: \"INVALID_MAX_LENGTH_EXCEEDED\",\n INVALID_ALL_OFFENSIVE: \"INVALID_ALL_OFFENSIVE\",\n INVALID_ALL_MIXED_SCRIPT: \"INVALID_ALL_MIXED_SCRIPT\",\n INVALID_NATIONALITY_SCRIPT: \"INVALID_NATIONALITY_SCRIPT\",\n INVALID_CHARACTER_REPETITION: \"INVALID_CHARACTER_REPETITION\",\n INVALID_ALL_HONORIFICS: \"INVALID_ALL_HONORIFICS\",\n INVALID_BOUNDARY_PATTERN: \"INVALID_BOUNDARY_PATTERN\",\n INVALID_KEYBOARD_BANGING: \"INVALID_KEYBOARD_BANGING\",\n INVALID_SINGLE_CHARACTER: \"INVALID_SINGLE_CHARACTER\",\n INVALID_ALL_NON_VOWEL: \"INVALID_ALL_NON_VOWEL\"\n};\nfunction validateName(name, _ref7) {\n var requiredProperties = _ref7.requiredPropsArray,\n nameValidations = _ref7.validationsMeta,\n nationality = _ref7.nationality;\n var fields = properties;\n var retErrors = [];\n Object.defineProperty(retErrors, \"errors\", {\n get: function get() {\n if (process.env.NODE_ENV !== \"production\") {\n var errorMsg = \"Please note that errors are no longer returned as an object, instead they are returned as an array. \" + \"From now on, please access the array directly rather than through the errors property. For more information, please read here: \" + \"https://github.paypal.com/pages/Globalization-R/worldready-js/docs/name-api.html#nameformatprototypevalidatenameobj\";\n console.warn(errorMsg);\n }\n return this;\n }\n });\n\n // Required name level field\n var requiredFieldErrors = validateRequiredField(name, requiredProperties);\n var nonEmptyNamefields = [];\n properties.forEach(function (field) {\n if (name[field] && name[field] !== \"\") {\n nonEmptyNamefields.push(field);\n }\n });\n\n // Script level check - It consist of INVALID_SCRIPT,\n // INVALID_ALL_MIXED_SCRIPT and INVALID_NATIONALITY_SCRIPT checks\n // checking INVALID_SCRIPT\n var scriptErrors = validateScript(name, nonEmptyNamefields, nameValidations.validRegExString);\n if (scriptErrors.length) {\n retErrors.push.apply(retErrors, scriptErrors.concat(requiredFieldErrors));\n return retErrors;\n }\n var scripts = getNameScript(nameValidations.scriptValidations, name);\n // checking INVALID_ALL_MIXED_SCRIPT\n var mixedScriptError = validateMixedScript(scripts, nonEmptyNamefields);\n if (mixedScriptError.length) {\n retErrors.push.apply(retErrors, mixedScriptError.concat(requiredFieldErrors));\n return retErrors;\n }\n // checking INVALID_NATIONALITY_SCRIPT\n var nationalityError = validateNationalityScript(scripts, nationality, nameValidations.supportedScripts, nonEmptyNamefields);\n if (nationalityError.length) {\n retErrors.push.apply(retErrors, nationalityError.concat(requiredFieldErrors));\n return retErrors;\n }\n\n // element level check\n var errors = fields.reduce(function (errors, field) {\n return errors.concat(validateField(name, field, nameValidations, scripts));\n }, []);\n retErrors.push.apply(retErrors, errors.concat(requiredFieldErrors));\n return retErrors;\n}\nfunction validateBusinessName(businessName, _ref8) {\n var nameValidations = _ref8.validationsMeta,\n businessType = _ref8.businessType,\n registeredBusinessType = _ref8.registeredBusinessType;\n var errors = [];\n if (!businessName || !businessName.businessName) {\n errors.push({\n code: NAME_ERROR_CODE.MISSING_REQUIRED,\n element: \"businessName\"\n });\n return errors;\n }\n var businessNameValidations = nameValidations.businessScriptValidations;\n var bName = businessName.businessName;\n var businessNameKey = getBusinessKey(businessType);\n var registeredBusinessTypeKey = getregisteredBusinessTypeKey(registeredBusinessType);\n var characterRangeRegex = getBusinessNameCharacterRangeForScripts(nameValidations, getBusinessNameSupportedScripts(businessType, nameValidations.supportedScripts));\n // Script Character Range Validation\n if (characterRangeRegex) {\n characterRangeRegex = new RegExp(\"^(\" + characterRangeRegex + \")*?$\");\n if (!characterRangeRegex.test(bName)) {\n var codePoint = invalidCodePointFromString(bName, characterRangeRegex);\n if (codePoint !== undefined) {\n errors.push({\n code: NAME_ERROR_CODE.INVALID_SCRIPT,\n element: \"businessName\",\n invalidCodePoint: codePoint\n });\n }\n return errors;\n }\n }\n var errorMap = {};\n var scriptsSet = getBusinessNameScripts(bName, nameValidations, businessType);\n var scripts = Array.from(scriptsSet);\n for (var index = 0; index < scripts.length; index = index + 1) {\n var scriptBasedRegexes = businessNameValidations[scripts[index]];\n // INVALID_ALL_PUNCTUATION\n errorMap = getPunctuationNameError(objectGet(scriptBasedRegexes, [\"punctuation\", \"pattern\", businessNameKey]), bName, \"businessName\", errorMap);\n // INVALID_ALL_OFFENSIVE\n errorMap = getOffensiveNameError(objectGet(scriptBasedRegexes, [\"offensive\", \"pattern\", businessNameKey]), bName, \"businessName\", errorMap);\n // INVALID_ALL_NUMBER\n var numberRegex = objectGet(scriptBasedRegexes, [\"numberRange\", \"pattern\", businessNameKey]);\n if (numberRegex) {\n numberRegex = new RegExp(\"^(\" + numberRegex + \")*?$\", \"i\");\n if (numberRegex.test(bName)) {\n errorMap.INVALID_ALL_PUNCTUATION = {\n code: NAME_ERROR_CODE.INVALID_ALL_PUNCTUATION,\n element: \"businessName\"\n };\n errorMap.INVALID_ALL_NUMBER = {\n code: NAME_ERROR_CODE.INVALID_ALL_NUMBER,\n element: \"businessName\"\n };\n }\n }\n // INVALID_ALL_RESTRICTED\n var restrictedNameRegex = objectGet(scriptBasedRegexes, [\"restrictedBusinessNameRange\", \"pattern\", businessNameKey]);\n if (restrictedNameRegex) {\n restrictedNameRegex = new RegExp(\"^(\" + restrictedNameRegex + \")$\", \"i\");\n if (restrictedNameRegex.test(bName)) {\n errorMap.INVALID_ALL_RESTRICTED = {\n code: NAME_ERROR_CODE.INVALID_ALL_RESTRICTED,\n element: \"businessName\"\n };\n }\n }\n // INVALID_ALL_REGISTERED_ACCOUNT\n var registeredNameValidation = objectGet(scriptBasedRegexes, [\"registeredBusinessNameRange\", \"pattern\", registeredBusinessTypeKey]);\n if (registeredNameValidation) {\n registeredNameValidation = new RegExp(registeredNameValidation, \"i\");\n if (registeredNameValidation.test(bName)) {\n errorMap.INVALID_ALL_REGISTERED_ACCOUNT = {\n code: NAME_ERROR_CODE.INVALID_ALL_REGISTERED_ACCOUNT,\n element: \"businessName\"\n };\n }\n }\n }\n Object.keys(errorMap).forEach(function (key) {\n errors.push(errorMap[key]);\n });\n return errors;\n}\nfunction getBusinessNameSupportedScripts(businessType, supportedScriptsByCountry) {\n var supportedScripts = objectGet(supportedScriptsByCountry, [\"business\", \"type\"]);\n var businessTypeScripts = businessType ? supportedScripts[businessType] || supportedScripts.DEFAULT : supportedScripts.DEFAULT;\n return businessTypeScripts;\n}\nfunction getBusinessNameScripts(bName, nameValidations, businessType) {\n var scripts = getBusinessNameSupportedScripts(businessType, nameValidations.supportedScripts);\n var bScripts = new Set();\n var _loop = function _loop(index) {\n var characterRangeRegex = objectGet(nameValidations, [\"businessScriptValidations\", scripts[index], \"characterRange\"]);\n if (characterRangeRegex) {\n characterRangeRegex = new RegExp(\"^(\" + characterRangeRegex + \")*?$\");\n var bNameStringArr = bName.trim().split(\"\");\n bNameStringArr.map(function (element) {\n if (characterRangeRegex.test(element)) {\n bScripts.add(scripts[index]);\n return;\n }\n });\n }\n };\n for (var index = 0; index < scripts.length; index = index + 1) {\n _loop(index);\n }\n return bScripts;\n}\nfunction getregisteredBusinessTypeKey(registeredBusinessType) {\n return registeredBusinessType && REGISTERED_BUSINESS_TYPE_KEY_MAP[registeredBusinessType] ? REGISTERED_BUSINESS_TYPE_KEY_MAP[registeredBusinessType] : REGISTERED_BUSINESS_TYPE_KEY_MAP[\"REGISTERED-BUSINESS\"];\n}\nfunction getBusinessKey(businessType) {\n if (businessType === \"LEGAL\") {\n return \"legal\";\n }\n if (businessType === \"DOING_BUSINESS_AS\") {\n return \"doingBusinessAs\";\n }\n return \"default\";\n}\nfunction getBusinessNameCharacterRangeForScripts(nameValidations, scripts) {\n var consolidatedCharacterRange = null;\n for (var index = 0; index < scripts.length; index = index + 1) {\n var characterRange = objectGet(nameValidations, [\"businessScriptValidations\", scripts[index], \"characterRange\"]);\n consolidatedCharacterRange = consolidatedCharacterRange ? consolidatedCharacterRange + \"|\" + characterRange : characterRange;\n }\n return consolidatedCharacterRange;\n}\nfunction validateField(name, nameField, nameValidations, scripts) {\n // errorMap is of following structure:\n // {\n // code : { error obj}\n // }\n // values of errorMap object will be return if name is not in validList\n var errorMap = {};\n var isNameInValidListFlag = false;\n if (name[nameField]) {\n // Currently, punctuation and keyboard banging are same in all the\n // scripts and that is why we can take any script to fetch regex.\n // Once we have script specific regex then we need to execute punctuation\n // and keyboard banging over all the scripts.\n scripts.forEach(function (script) {\n var scriptBasedRegexes = nameValidations.scriptValidations[script];\n var nameMaxLength = null;\n if (nameValidations.maxLength && nameValidations.maxLength[script] && nameValidations.maxLength[script][nameField]) {\n nameMaxLength = nameValidations.maxLength[script][nameField];\n }\n var repetition = nameValidations.repetition,\n honorificsVariation = nameValidations.honorificsVariation,\n singleCharacterValidation = nameValidations.singleCharacterValidation,\n boundaryValidation = nameValidations.boundaryValidation;\n if (isNameInValidList(name, nameField, scriptBasedRegexes)) {\n isNameInValidListFlag = true;\n return;\n }\n // Run all the validations on the name[nameField]\n validatePunctuation(name, nameField, scriptBasedRegexes, errorMap);\n validateRepetition(name, nameField, repetition, errorMap);\n validateHonorifics(name, nameField, honorificsVariation, errorMap);\n validateBoundaryValidation(name, nameField, boundaryValidation, errorMap);\n validateKeyboardBanging(name, nameField, scriptBasedRegexes, errorMap);\n validateSingleCharacter(name, nameField, singleCharacterValidation, errorMap);\n validateNonVowel(name, nameField, scriptBasedRegexes, nameValidations, errorMap);\n validateOffensiveName(name, nameField, scriptBasedRegexes, errorMap);\n validateMaxLength(name, nameField, nameMaxLength, errorMap);\n });\n }\n return isNameInValidListFlag ? [] : Object.values(errorMap);\n}\n\n/**\n * check each field whether length of name segment is exceeded maximum length value.\n *\n * @param {Obj} name\n * @param {String} nameField\n * @param {Number} nameMaxLength\n * @param {Obj} errorMap\n * @return {Obj} errorMap\n */\nfunction validateMaxLength(name, nameField, nameMaxLength, errorMap) {\n if (!name[nameField] || !nameMaxLength) {\n return errorMap;\n }\n if (name[nameField].length > nameMaxLength) {\n errorMap.INVALID_MAX_LENGTH_EXCEEDED = {\n code: NAME_ERROR_CODE.INVALID_MAX_LENGTH_EXCEEDED,\n element: nameField\n };\n }\n return errorMap;\n}\nfunction validateOffensiveName(name, nameField, scriptBasedRegexes, errorMap) {\n if (!Object.keys(scriptBasedRegexes.offensive.pattern).includes(nameField) || !name[nameField]) {\n return errorMap;\n }\n return getOffensiveNameError(scriptBasedRegexes.offensive.pattern[nameField], name[nameField], nameField, errorMap);\n}\nfunction getOffensiveNameError(offensiveNameRegex, value, element, errorMap) {\n if (offensiveNameRegex) {\n offensiveNameRegex = new RegExp(\".*?\" + offensiveNameRegex + \".*?\", \"i\");\n if (offensiveNameRegex.test(value)) {\n errorMap.INVALID_ALL_OFFENSIVE = {\n code: NAME_ERROR_CODE.INVALID_ALL_OFFENSIVE,\n element: element\n };\n }\n }\n return errorMap;\n}\nfunction isNameInValidList(name, nameField, scriptBasedRegexes) {\n if (!Object.keys(scriptBasedRegexes.validList.pattern).includes(nameField) || !name[nameField]) {\n return false;\n }\n var validListRegex = scriptBasedRegexes.validList.pattern[nameField];\n if (validListRegex) {\n validListRegex = new RegExp(\"^(\" + validListRegex + \")$\", \"i\");\n if (validListRegex.test(name[nameField].toLowerCase())) {\n return true;\n }\n }\n return false;\n}\nfunction isInitialName(name, nameField, scriptBasedRegexes) {\n if (!Object.keys(scriptBasedRegexes.initialsRange.pattern).includes(nameField) || !name[nameField]) {\n return false;\n }\n var initialsRangeRegex = scriptBasedRegexes.initialsRange.pattern[nameField];\n if (initialsRangeRegex) {\n initialsRangeRegex = new RegExp(\"^(\" + initialsRangeRegex + \")$\", \"i\");\n if (initialsRangeRegex.test(name[nameField])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Identifies most likely script used in name.\n * If all the name's field don't match to a single script\n * then default script would be returned.\n */\nfunction getNameScript(scriptValidations, name) {\n var characterRangeRegex;\n var nameConcat = properties.reduce(function (nameConcat, item) {\n return nameConcat + (name[item] || \"\");\n }, \"\");\n var scripts = [];\n Object.keys(scriptValidations).forEach(function (currentScript) {\n var currScriptValidations = scriptValidations[currentScript];\n characterRangeRegex = currScriptValidations.characterRange;\n if (characterRangeRegex) {\n characterRangeRegex = new RegExp(\"^(\" + characterRangeRegex + \")$\");\n if (isCharacterRangeMatch(characterRangeRegex, nameConcat)) {\n scripts.push(currentScript);\n }\n }\n });\n return scripts;\n}\nfunction isCharacterRangeMatch(characterRange, name) {\n var isMatch = true;\n var uniqueCharArr = new Set(name);\n for (var _iterator2 = _createForOfIteratorHelperLoose(uniqueCharArr), _step2; !(_step2 = _iterator2()).done;) {\n var uniqueChar = _step2.value;\n if (!characterRange.test(uniqueChar)) {\n isMatch = false;\n break;\n }\n }\n return isMatch;\n}\nfunction validateRequiredField(name, requiredProperties) {\n var errors = [];\n requiredProperties.forEach(function (property) {\n if (!name[property] || name[property] === \"\") {\n errors.push({\n code: NAME_ERROR_CODE.MISSING_REQUIRED,\n element: property\n });\n }\n });\n return errors;\n}\nfunction validateMixedScript(scripts, nonEmptyNamefields) {\n var errors = [];\n if (scripts.length === 0) {\n nonEmptyNamefields.forEach(function (field) {\n errors.push({\n code: NAME_ERROR_CODE.INVALID_ALL_MIXED_SCRIPT,\n element: field\n });\n });\n }\n return errors;\n}\nfunction validateNationalityScript(scripts, nationality, supportedScripts, nonEmptyNamefields) {\n var errors = [];\n var supportedScriptsByNationality = supportedScripts.personal.nationality;\n var nationalityScripts = nationality != null ? supportedScriptsByNationality[nationality] || supportedScriptsByNationality.INTERNATIONAL || supportedScriptsByNationality.DEFAULT : supportedScriptsByNationality.DEFAULT;\n var isNationalityValid = false;\n for (var index = 0; index < scripts.length; index++) {\n if (nationalityScripts.indexOf(scripts[index]) !== -1) {\n isNationalityValid = true;\n break;\n }\n }\n if (!isNationalityValid) {\n nonEmptyNamefields.forEach(function (field) {\n errors.push({\n code: NAME_ERROR_CODE.INVALID_NATIONALITY_SCRIPT,\n element: field\n });\n });\n }\n return errors;\n}\nfunction validateScript(name, nonEmptyNamefields, validRegExString) {\n var nameConcat = properties.reduce(function (nameConcat, item) {\n return nameConcat + (name[item] || \"\");\n }, \"\");\n var validRangeForCountryRegex = validRegExString;\n if (validRangeForCountryRegex) {\n validRangeForCountryRegex = new RegExp(\"^(\" + validRangeForCountryRegex + \")$\");\n // Checking INVALID_SCRIPT\n if (!isCharacterRangeMatch(validRangeForCountryRegex, nameConcat)) {\n var errors = [];\n nonEmptyNamefields.forEach(function (field) {\n var codePoint = invalidCodePointFromString(name[field], validRangeForCountryRegex);\n if (codePoint !== undefined) {\n errors.push({\n code: NAME_ERROR_CODE.INVALID_SCRIPT,\n element: field,\n invalidCodePoint: codePoint\n });\n }\n });\n return errors;\n }\n }\n return [];\n}\nfunction validatePunctuation(name, nameField, scriptBasedRegexes, errorMap) {\n if (!Object.keys(scriptBasedRegexes.punctuation.pattern).includes(nameField) || !name[nameField]) {\n return errorMap;\n }\n return getPunctuationNameError(scriptBasedRegexes.punctuation.pattern[nameField], name[nameField], nameField, errorMap);\n}\nfunction getPunctuationNameError(punctuationRegex, value, element, errorMap) {\n if (punctuationRegex) {\n punctuationRegex = new RegExp(\"^(\" + punctuationRegex + \")*?$\", \"i\");\n if (punctuationRegex.test(value)) {\n errorMap.INVALID_ALL_PUNCTUATION = {\n code: NAME_ERROR_CODE.INVALID_ALL_PUNCTUATION,\n element: element\n };\n }\n }\n return errorMap;\n}\nfunction validateRepetition(name, nameField, repetitionRegexObj, errorMap) {\n if (!Object.keys(repetitionRegexObj.pattern).includes(nameField) || !name[nameField]) {\n return errorMap;\n }\n var repetitionRegex = repetitionRegexObj.pattern[nameField];\n if (repetitionRegex) {\n var repetitionResult;\n repetitionRegex = new RegExp(\"^\" + repetitionRegex + \"*?$\", \"i\");\n if ((repetitionResult = repetitionRegex.exec(name[nameField])) !== null) {\n errorMap.INVALID_CHARACTER_REPETITION = {\n code: NAME_ERROR_CODE.INVALID_CHARACTER_REPETITION,\n element: nameField,\n repeatedCharacter: repetitionResult.find(function (_) {\n return ![undefined, null].includes(_) && _ !== repetitionResult[0];\n })\n };\n }\n }\n return errorMap;\n}\nfunction validateHonorifics(name, nameField, honorificsVariation, errorMap) {\n if (!Object.keys(honorificsVariation.pattern).includes(nameField) || !name[nameField]) {\n return errorMap;\n }\n var honorificsRegex = honorificsVariation.pattern[nameField].join(\"|\");\n if (honorificsRegex) {\n honorificsRegex = new RegExp(\"^(\" + honorificsRegex + \")$\", \"i\");\n if (honorificsRegex.test(name[nameField])) {\n errorMap.INVALID_ALL_HONORIFICS = {\n code: NAME_ERROR_CODE.INVALID_ALL_HONORIFICS,\n element: nameField\n };\n }\n }\n return errorMap;\n}\nfunction validateBoundaryValidation(name, nameField, boundaryValidation, errorMap) {\n if (!Object.keys(boundaryValidation.pattern).includes(nameField) || !name[nameField]) {\n return errorMap;\n }\n var boundaryValidationRegex = boundaryValidation.pattern[nameField];\n if (boundaryValidationRegex) {\n // We don't add ^( and )$ because the regex already has position based tokens\n boundaryValidationRegex = new RegExp(boundaryValidationRegex, \"i\");\n if (boundaryValidationRegex.test(name[nameField])) {\n var bvResult = boundaryValidationRegex.exec(name[nameField]);\n errorMap.INVALID_BOUNDARY_PATTERN = {\n code: NAME_ERROR_CODE.INVALID_BOUNDARY_PATTERN,\n element: nameField,\n invalidSequence: bvResult[0]\n };\n }\n }\n return errorMap;\n}\nfunction validateKeyboardBanging(name, nameField, scriptBasedRegexes, errorMap) {\n if (!Object.keys(scriptBasedRegexes.keyboardBanging.pattern).includes(nameField) || !name[nameField]) {\n return errorMap;\n }\n var keyboardBangingRegex = scriptBasedRegexes.keyboardBanging.pattern[nameField];\n var kbResult;\n if (keyboardBangingRegex) {\n keyboardBangingRegex = new RegExp(\".*?(\" + keyboardBangingRegex + \").*?\", \"i\");\n if (keyboardBangingRegex.test(name[nameField])) {\n kbResult = keyboardBangingRegex.exec(name[nameField]);\n errorMap.INVALID_KEYBOARD_BANGING = {\n code: NAME_ERROR_CODE.INVALID_KEYBOARD_BANGING,\n element: nameField,\n invalidSequence: kbResult[1]\n };\n }\n }\n return errorMap;\n}\nfunction validateSingleCharacter(name, nameField, singleCharacterValidation, errorMap) {\n if (!singleCharacterValidation.pattern || !Object.keys(singleCharacterValidation.pattern).includes(nameField) || !name[nameField]) {\n return errorMap;\n }\n var singleCharacterRegexPat = singleCharacterValidation.pattern[nameField].join(\"|\");\n if (singleCharacterRegexPat) {\n var singleCharacterRegex = new RegExp(\"^(\" + singleCharacterRegexPat + \")$\", \"i\");\n if (singleCharacterRegex.test(name[nameField])) {\n errorMap.INVALID_SINGLE_CHARACTER = {\n code: NAME_ERROR_CODE.INVALID_SINGLE_CHARACTER,\n element: nameField\n };\n }\n }\n return errorMap;\n}\nfunction validateNonVowel(name, nameField, scriptBasedRegexes, nameValidations, errorMap) {\n if (!Object.keys(scriptBasedRegexes.nonVowel.pattern).includes(nameField) || !name[nameField]) {\n return errorMap;\n }\n var nonVowelRegex = scriptBasedRegexes.nonVowel.pattern[nameField];\n var singleCharacterRegex = nameValidations.singleCharacterRegex.join(\"|\");\n var honorificsRegex = nameValidations.honorificsRegex.join(\"|\");\n var boundaryRegex = nameValidations.boundaryRegex;\n var punctuationRegex = scriptBasedRegexes.punctuationRegex;\n if (singleCharacterRegex && nonVowelRegex && honorificsRegex && punctuationRegex && boundaryRegex) {\n singleCharacterRegex = new RegExp(\"^(\" + singleCharacterRegex + \")$\", \"i\");\n nonVowelRegex = new RegExp(\"^(\" + nonVowelRegex + \")$\", \"i\");\n honorificsRegex = new RegExp(\"^(\" + honorificsRegex + \")$\", \"i\");\n boundaryRegex = new RegExp(boundaryRegex, \"i\");\n punctuationRegex = new RegExp(\"^(\" + punctuationRegex + \")*?$\", \"i\");\n if (!singleCharacterRegex.test(name[nameField]) && !honorificsRegex.test(name[nameField]) && !boundaryRegex.test(name[nameField]) && !punctuationRegex.test(name[nameField]) && !isInitialName(name, nameField, scriptBasedRegexes) && nonVowelRegex.test(name[nameField])) {\n errorMap.INVALID_ALL_NON_VOWEL = {\n code: NAME_ERROR_CODE.INVALID_ALL_NON_VOWEL,\n element: nameField\n };\n }\n }\n return errorMap;\n}\nfunction transformName(name, options) {\n var transformedName = Object.assign({}, name); //clone object\n if (options.fromType === options.toType) {\n // No need to perform tranformation\n return transformedName;\n }\n if (options.fromType === \"oneSurname\") {\n if (transformedName.surname) {\n var surnames = transformedName.surname.trim().split(/\\u0020{2}(.+)/g); //splitting by first occurrence of double space\n transformedName.surname = surnames[0] ? surnames[0].trim() : \"\";\n transformedName.secondSurname = surnames[1] ? replaceDoubleSpaces(surnames[1]) : \"\";\n } else if (transformedName.secondSurname) {\n //only secondSurname is present in one2two transform\n transformedName.surname = \"\";\n transformedName.secondSurname = replaceDoubleSpaces(transformedName.secondSurname);\n }\n } else if (options.fromType === \"twoSurnames\") {\n if (transformedName.surname) {\n transformedName.surname = replaceDoubleSpaces(transformedName.surname);\n if (transformedName.secondSurname) {\n transformedName.secondSurname = replaceDoubleSpaces(transformedName.secondSurname);\n transformedName.surname = transformedName.surname + \" \" + transformedName.secondSurname.trim();\n delete transformedName.secondSurname;\n }\n } else if (transformedName.secondSurname) {\n //only secondSurname is present in two2one transform\n transformedName.surname = replaceDoubleSpaces(transformedName.secondSurname); //populate ouptput.surname with input.secondSurname\n delete transformedName.secondSurname;\n }\n }\n return transformedName;\n}\nfunction replaceDoubleSpaces(namePart) {\n return namePart.trim().replace(/\\u0020{2,}/g, \" \");\n}\nfunction nameFormatToParts(name, props) {\n return formatToParts(name, props);\n}\nvar getMissingMetadataError = function getMissingMetadataError(path) {\n var message = \"Missing WorldReady metadata, please refer to https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about-load-worldready-data.html\";\n if (path) {\n message += \"\\nPath: \" + path;\n }\n return new Error(message);\n};\nfunction validateCldr(path, value, options) {\n if (options === void 0) {\n options = {\n skip: []\n };\n }\n var skipBoolean = options.skip.some(function (regex) {\n return regex.test(path);\n });\n if (skipBoolean) {\n return;\n }\n if (value === undefined) {\n throw getMissingMetadataError(path);\n }\n}\nvar countryAliasMapping = {\n C2: \"CN\",\n UK: \"GB\"\n};\nfunction getResolvedRegion(region) {\n return countryAliasMapping[region] || region;\n}\nvar ENVIRONMENT = {\n PRODUCTION: \"production\"\n};\nvar assertName, assertNationalityWithBusinessType, assertBusinessTypeWithPerson, assertregisteredBusinessTypeWithPerson;\nif (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertName = function assertName(name) {\n assertType(name, \"name\", [\"plain object\"]);\n properties.forEach(function (property) {\n assertType(name[property], \"name.\" + property, [\"string\", \"undefined\"]);\n });\n };\n assertNationalityWithBusinessType = function assertNationalityWithBusinessType(nationality, type) {\n if (nationality && type === \"business\") {\n console.log(\"WARNING: When type is business, options.nationality should be unabled. See our updated docs for more details.\\n Fix your code by deleting options.nationality.\");\n }\n };\n assertBusinessTypeWithPerson = function assertBusinessTypeWithPerson(businessType, type) {\n if (businessType && type === \"person\") {\n console.log(\"WARNING: When options.businessType is declared in constructor, options.type should be business only. See our updated docs for more details.\\n Fix your code by using business only for your options.type.\");\n }\n };\n assertregisteredBusinessTypeWithPerson = function assertregisteredBusinessTypeWithPerson(registeredBusinessType, type) {\n if (registeredBusinessType && type === \"person\") {\n console.log(\"WARNING: When options.registeredBusinessType is declared in constructor, options.type should be business only. See our updated docs for more details.\\n Fix your code by using business only for your options.type.\");\n }\n };\n}\nvar NameFormat = /*#__PURE__*/function () {\n function NameFormat(worldReady, options) {\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(worldReady, \"worldReady\", [\"object\", \"plain object\"]);\n if (!isWorldReadyInstance(worldReady)) {\n var _Cldr$attributes = new Cldr(\"und-\" + worldReady.region).attributes,\n language = _Cldr$attributes.language,\n region = _Cldr$attributes.region;\n throw new Error(\"DEPRECATED WARNING: NameFormat API has changed for consistency with other formatters, see our updated docs for more information.\\nFix your code by using:\\n\" + (\"new NameFormat(new WorldReady(\\\"\" + language + \"-\" + region + \"\\\"), \" + JSON.stringify(Object.assign({\n nameRegion: region\n }, options || {})) + \")\"));\n }\n assertType(options, \"options\", [\"undefined\", \"plain object\"]);\n assertType(options.nameRegion, \"options.nameRegion\", [\"string\"]);\n assertNationalityWithBusinessType(options.nationality, options.type);\n assertBusinessTypeWithPerson(options.businessType, options.type);\n assertregisteredBusinessTypeWithPerson(options.registeredBusinessType, options.type);\n if (options.nationality) {\n assertType(options.nationality, \"options.nationality\", [\"string\"]);\n }\n if (options.businessType) {\n assertType(options.businessType, \"options.businessType\", [\"string\"]);\n }\n if (options.registeredBusinessType) {\n assertType(options.registeredBusinessType, \"options.businessType\", [\"string\"]);\n }\n }\n options = options || {};\n var cldr = worldReady.globalize.cldr;\n // used for determining layout for a given locale.\n var localeScript = cldr.attributes.script;\n var nameRegion = getResolvedRegion(options.nameRegion);\n var _options4 = options,\n _options4$style = _options4.style,\n style = _options4$style === void 0 ? NAME_STYLES.FULL : _options4$style,\n _options4$type = _options4.type,\n type = _options4$type === void 0 ? NAME_TYPES.PERSON : _options4$type,\n nationality = _options4.nationality,\n businessType = _options4.businessType,\n registeredBusinessType = _options4.registeredBusinessType,\n _options4$formatAs = _options4.formatAs,\n formatAs = _options4$formatAs === void 0 ? DEFAULT_FORMATAS : _options4$formatAs;\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(style, \"options.style\", [\"string\"]);\n assertRange(style, Object.values(NAME_STYLES), \"Invalid value for options.style: {value}, needs to be one of {{available}}\", {\n value: style,\n available: Object.values(NAME_STYLES)\n });\n assertType(type, \"options.type\", [\"string\"]);\n assertRange(type, Object.values(NAME_TYPES), \"Invalid value for options.type: {value}, needs to be one of {{available}}\", {\n value: type,\n available: Object.values(NAME_TYPES)\n });\n assertType(formatAs.titleCase, \"formatAs.titleCase\", [\"boolean\"]);\n }\n this.type = type;\n this.nationality = nationality;\n cldr.on(\"get\", validateCldr);\n var personNameData, layouts, requiredPropsArray, regionDefaultScript, nameFormatData;\n try {\n regionDefaultScript = cldr.get([\"supplemental/personNameData\", nameRegion, \"primaryScript\"]);\n layouts = type === NAME_TYPES.PERSON ? cldr.get([\"supplemental/personNameData\", nameRegion, \"layouts\", style]) : cldr.get([\"supplemental/businessNameData/default/layouts\"]);\n requiredPropsArray = type === NAME_TYPES.PERSON ? cldr.get([\"supplemental/personNameData\", nameRegion, \"requiredProperties\"]) : cldr.get([\"supplemental/businessNameData/default/requiredProperties\"]);\n personNameData = cldr.get([\"supplemental/personNameData\", nameRegion]);\n nameFormatData = formatAs.titleCase ? cldr.get([\"supplemental/commonNameData/region/default/script/default/formatAs\"]) : {};\n } finally {\n cldr.off(\"get\", validateCldr);\n }\n var _personNameData = personNameData,\n validationsMeta = _personNameData.validations;\n this._validate = function (name) {\n return type === NAME_TYPES.PERSON ? validateName(name, {\n requiredPropsArray: requiredPropsArray,\n validationsMeta: validationsMeta,\n nationality: nationality\n }) : validateBusinessName(name, {\n validationsMeta: validationsMeta,\n businessType: businessType,\n registeredBusinessType: registeredBusinessType\n });\n };\n var supportedScripts = Object.keys(layouts);\n this._formatToParts = function (name) {\n return nameFormatToParts(name, {\n layouts: layouts,\n regionDefaultScript: regionDefaultScript,\n localeScript: localeScript,\n supportedScripts: supportedScripts,\n requiredPropsArray: requiredPropsArray,\n formatAs: formatAs,\n nameFormatData: nameFormatData\n });\n };\n if (options.requiredMethod === \"validateName\") {\n this._runtimeValue = {\n layouts: layouts,\n regionDefaultScript: regionDefaultScript,\n localeScript: localeScript,\n supportedScripts: supportedScripts,\n requiredPropsArray: requiredPropsArray,\n validationsMeta: validationsMeta,\n requiredMethod: options.requiredMethod,\n type: type\n };\n } else if (options.requiredMethod === \"nameFormatToParts\") {\n this._runtimeValue = {\n layouts: layouts,\n regionDefaultScript: regionDefaultScript,\n localeScript: localeScript,\n supportedScripts: supportedScripts,\n requiredMethod: options.requiredMethod,\n requiredPropsArray: requiredPropsArray\n };\n }\n\n // Clone + delete required method so we can look it up from runtime cache correctly based on options\n var _runtimeOptions = {};\n objectDeepAssign(_runtimeOptions, options);\n delete _runtimeOptions.requiredMethod;\n this._runtimeArgs = [_runtimeOptions];\n }\n var _proto = NameFormat.prototype;\n _proto.format = function format(name) {\n return this.formatToParts(name).reduce(function (memo, _ref9) {\n var value = _ref9.value;\n return memo + value;\n }, \"\");\n };\n _proto.formatToParts = function formatToParts(name) {\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertName(name);\n if (this.type === NAME_TYPES.PERSON) {\n assert(!name.businessName, 'You are trying to format a business name using `new NameFormat(worldReady, { type: \"person\" })`. Please, use `new NameFormat(worldReady, { type: \"business\" })` instead');\n }\n if (this.type === NAME_TYPES.BUSINESS) {\n assert(!name.givenName, 'You are trying to format a person name using `new NameFormat(worldReady, { type: \"business\" })`. Please, use `new NameFormat(worldReady, { type: \"person\" })` instead');\n }\n }\n return this._formatToParts(name);\n };\n _proto.validate = function validate(name) {\n return this._validate(name);\n };\n return NameFormat;\n}();\nvar NameConverter = /*#__PURE__*/function () {\n function NameConverter(options) {\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(options, \"options\", [\"plain object\"]);\n assertType(options.fromType, \"options.fromType\", [\"string\"]);\n assertType(options.toType, \"options.toType\", [\"string\"]);\n var availableTypes = [\"oneSurname\", \"twoSurnames\"];\n assertRange(options.fromType, availableTypes, \"Invalid options.fromType {{value}}, expected one of {{availableTypes}}.\", {\n value: options.fromType,\n availableTypes: availableTypes\n });\n assertRange(options.toType, availableTypes, \"Invalid options.toType {{value}}, expected one of {{availableTypes}}.\", {\n value: options.toType,\n availableTypes: availableTypes\n });\n }\n this._transform = function (name) {\n return transformName(name, options);\n };\n }\n var _proto2 = NameConverter.prototype;\n _proto2.transform = function transform(name) {\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(name, \"name\", [\"plain object\"]);\n }\n name = name || {};\n return this._transform(name);\n };\n return NameConverter;\n}();\n\nexport { NameConverter, NameFormat };\n","import 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.join';\nimport 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.array.slice';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.object.entries';\nimport 'core-js/modules/es.object.keys';\nimport 'core-js/modules/es.object.values';\nimport 'core-js/modules/es.regexp.constructor';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.regexp.flags';\nimport 'core-js/modules/es.regexp.to-string';\nimport 'core-js/modules/es.string.includes';\nimport 'core-js/modules/es.string.match';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.split';\nimport 'core-js/modules/es.string.trim';\nimport 'core-js/modules/web.dom-collections.for-each';\nimport { NameFormat } from '@paypalcorp/worldready-name';\nimport { isWorldReadyInstance } from '@paypalcorp/worldready-core';\nimport { assertType, assertRange, assert } from 'yaassertion';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar _excluded = [\"type\", \"parts\", \"value\"];\nvar Cldr = require('cldrjs/dist/cldr');\n\n/**\n * Camelizes strings\n */\nfunction camelize(text) {\n return text.replace(/^([A-Z])|[\\s-_]+(\\w)/g, function (match, p1, p2) {\n if (p2) return p2.toUpperCase();\n return p1.toLowerCase();\n });\n}\nfunction snakeCase(text) {\n return text.replace(/(?:^|\\.?)([A-Z0-9])/g, function (x, y) {\n return \"_\" + y.toLowerCase();\n }).replace(/^_/, \"\");\n}\nfunction camelizeObject(object) {\n return Object.assign.apply(Object, Object.keys(object).map(function (key) {\n var _ref;\n return _ref = {}, _ref[camelize(key)] = object[key], _ref;\n }));\n}\nfunction snakeCaseObject(object, specialTransforms) {\n if (specialTransforms === void 0) {\n specialTransforms = {};\n }\n return Object.assign.apply(Object, Object.keys(object).map(function (key) {\n var _ref2;\n return _ref2 = {}, _ref2[specialTransforms[key] || snakeCase(key)] = object[key], _ref2;\n }));\n}\n\n/**\n * Utility function to remove literals that are not required.\n * We only want to add a literal if we've previously encountered a non-literal field\n * and it's value is not an empty string. Hence we don't add a literal field to the\n * response immediately as we encounter it, but we wait until we see the next non-literal\n * field before adding the literal to our response.\n * @param {Array} parts an array with details about each part. Required props for each part are:\n * type: a string specifying whether the part is literal or not\n * value: value for that part\n * @returns {Array} modified array where unnecessary literals are removed\n */\nfunction removeExtraLiterals(parts) {\n if (parts === void 0) {\n parts = [];\n }\n if (!parts || !parts.length) {\n return;\n }\n var addedFirstNonLiteralField = false,\n literalField = null,\n result = [];\n parts.forEach(function (part) {\n if (part.type !== \"literal\") {\n if (literalField && addedFirstNonLiteralField && part.value.length) {\n result.push(literalField);\n }\n literalField = null;\n result.push(part);\n if (part.value.length) {\n addedFirstNonLiteralField = true;\n }\n } else {\n literalField = Object.assign({}, part);\n }\n });\n return result;\n}\nfunction cloneArray(array) {\n return array.slice(0);\n}\nfunction cloneDate(date) {\n return new Date(date.getTime());\n}\n\n/**\n * Deeply merges plain objects.\n *\n * Eg.\n * objectDeepAssign( { a: { b: 1, c: 2 } }, { a: { b: 3, d: 4 } }, ... )\n * -> { a: { b: 3, c: 2, d: 4 } }\n *\n * Code from https://github.com/rxaviers/cldrjs/blob/master/src/util/json/merge.js\n */\nfunction objectDeepAssign(destination) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n sources.forEach(function (source) {\n var prop;\n for (prop in source) {\n if (Array.isArray(source[prop])) {\n // Clone and set arrays.\n destination[prop] = cloneArray(source[prop]);\n } else if (source[prop] instanceof Date) {\n // Clone and set dates.\n destination[prop] = cloneDate(source[prop]);\n } else if (typeof source[prop] === \"object\") {\n // Merge objects.\n destination[prop] = objectDeepAssign({}, destination[prop], source[prop]);\n } else {\n // Set new values.\n destination[prop] = source[prop];\n }\n }\n });\n return destination;\n}\n\n/* Gets value in object path\n * @param {object} obj\n * @param {string|array} path\n * @examples\n * get({foo: 1, bar: {baz: 2}}, 'bar.baz');\n * > 2\n * get({foo: 1, bar: {baz: 2}}, 'foo.bar.baz.quax');\n * > undefined\n * NOTE: Asterisk support for Node.js only (reduced bytes)\n */\nvar objectGet;\n{\n // Client-side\n objectGet = function objectGet(obj, path) {\n if (typeof path === \"string\") {\n path = path.split(\".\");\n }\n if (!path.length) {\n return obj;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (path.some(function (part) {\n return part === \"*\";\n })) {\n throw new Error(\"Internal error: objectGet asterisk support NOT available\");\n }\n }\n var prop = path.slice(-1);\n var node = path.slice(0, -1).reduce(function (node, item) {\n return node[item] || {};\n }, obj);\n return node[prop];\n };\n}\n\n/**\n * Shallow merges an arary of objects.\n * shallowMerge([{ a: { i: 1 }}, { b: 2}, { a: { x: 99 }}])\n * > { a: { x: 99 }, b: 2 }\n */\nfunction shallowMerge(arrayOfObjects) {\n return Object.assign.apply(Object, [{}].concat(arrayOfObjects));\n}\nvar COMMON_ADDRESS_DATA = \"common\";\nvar ADDRESS_TYPES = {\n COARSE: \"coarse\",\n PORTABLE: \"portable\"\n};\nvar ADDRESS_STYLES = {\n MULTILINE: \"multiline\",\n SINGLELINE: \"singleline\",\n INTERNATIONAL_MULTILINE: \"international-multiline\",\n INTERNALTIONAL_SINGLELINE: \"international-singleline\"\n};\nvar ADDRESS_ERROR_CODES = {\n MISSING_ONE_OF: \"MISSING_ONE_OF\",\n MISSING_REQUIRED: \"MISSING_REQUIRED\",\n INVALID_PATTERN: \"INVALID_PATTERN\",\n INVALID_ALL_OFFENSIVE: \"INVALID_ALL_OFFENSIVE\",\n ADDRESS_CONTAINS_PO_BOX: \"ADDRESS_CONTAINS_PO_BOX\",\n ADDRESS_CONTAINS_RURAL_ROUTE: \"ADDRESS_CONTAINS_RURAL_ROUTE\"\n};\nvar COARSE_ADDRESS_FIELDS = [\"line1\", \"line2\", \"state\", \"city\", \"postalCode\", \"countryCode\"];\nvar PORTABLE_ADDRESS_FIELDS = [\"addressLine1\", \"addressLine2\", \"addressLine3\", \"adminArea4\", \"adminArea3\", \"adminArea2\", \"adminArea1\", \"postalCode\", \"countryCode\"];\nvar PORTABLE_ADDRESS_WITH_DETAILS_FIELDS = PORTABLE_ADDRESS_FIELDS.concat([\"addressDetails.buildingName\", \"addressDetails.deliveryService\", \"addressDetails.streetName\", \"addressDetails.streetNumber\", \"addressDetails.streetType\", \"addressDetails.subBuilding\"]);\nvar ADDRESS_TRANSFORM_TYPES = {\n COARSE: \"coarse\",\n PORTABLE: \"portable\",\n ADDRESS_PORTABLE_WITH_DETAILS: \"address-portable-with-details\"\n};\nvar ADDRESS_TYPES_FOR_PO_BOX_RURAL_ROUTE_VALIDATION = {\n SHIPPING: \"shipping\",\n MAILING: \"mailing\",\n PRIMARY: \"primary\"\n};\n\n/**\n * TODO: Remove this country specific logic to ignore po box error for US\n * after metrics are gathered from OAS since country specific logic\n * should not be present in sdk.\n */\nvar COUNTRIES_TO_IGNORE_FOR_PO_BOX_VALIDATION = [\"US\"];\n\n/**\n * Given a parameter, assert it's a valid address.\n * @param {Object} address the address object\n * @throws TypeError\n */\nfunction assertAddress(address) {\n var props = Object.keys(address);\n if (address.addressDetails) {\n props = props.concat(Object.keys(address.addressDetails).map(function (addressDetailsField) {\n return \"addressDetails.\" + addressDetailsField;\n }));\n }\n props.forEach(function (propName) {\n if (propName === \"addressDetails\") {\n return;\n }\n });\n}\nfunction oldGriffinCoarseSupport(address) {\n var fixes = {};\n if (address.postcode !== undefined && address.postalCode === undefined) {\n fixes.postalCode = address.postcode;\n }\n if (address.country !== undefined && address.countryCode === undefined) {\n fixes.countryCode = address.country;\n }\n // Clone and set coarse address \"fixes\".\n if (Object.keys(fixes).length) {\n address = objectDeepAssign(address, fixes);\n }\n return address;\n}\n\n/**\n * The core transformAddress function\n * @param {Object} address See README for details.\n * @param {Object} options See README for details.\n * @returns See README for details.\n * @example See README for details.\n */\nfunction transformAddress(address, options, metadata) {\n if (options === void 0) {\n options = {};\n }\n assertAddress(address);\n var _options = options,\n from = _options.from,\n to = _options.to;\n if (from === ADDRESS_TRANSFORM_TYPES.COARSE) {\n address = oldGriffinCoarseSupport(address);\n }\n if (from === ADDRESS_TRANSFORM_TYPES.PORTABLE && to === ADDRESS_TRANSFORM_TYPES.COARSE || from === ADDRESS_TRANSFORM_TYPES.COARSE && to === ADDRESS_TRANSFORM_TYPES.PORTABLE) {\n return convertAddress(address, {\n metadata: metadata,\n from: from,\n to: to\n });\n } else if (from === ADDRESS_TRANSFORM_TYPES.ADDRESS_PORTABLE_WITH_DETAILS && to === ADDRESS_TRANSFORM_TYPES.PORTABLE) {\n return convertPortableAddressWithDetailsToPortable(address, {\n metadata: metadata\n });\n } else if (from === ADDRESS_TRANSFORM_TYPES.ADDRESS_PORTABLE_WITH_DETAILS && to === ADDRESS_TRANSFORM_TYPES.COARSE) {\n return convertPortableAddressWithDetailsToCoarse(address, {\n metadata: metadata\n });\n }\n return null;\n}\n\n/**\n * Function that converts portable address to coarse and vice versa\n * @param {Object} address - object that needs to be converted to either portable or coarse\n * @param {Object} options - object with following details\n * metadata: object that has all the details for the countryCode territory\n * from: string value describing what is the type of input address object (portable | coarse)\n * to: string value describing what the address object needs to be converted to (portable | coarse)\n * @returns {Object} updated address object\n */\nfunction convertAddress(address, options) {\n if (address === void 0) {\n address = {};\n }\n if (options === void 0) {\n options = {};\n }\n if (!Object.keys(address).length || !options.metadata) {\n return null;\n }\n var transformMapping = metadataTransformMapping(options.metadata, address.countryCode, options.from, options.to);\n var fromAddressFields = options.from === ADDRESS_TRANSFORM_TYPES.PORTABLE ? PORTABLE_ADDRESS_FIELDS : COARSE_ADDRESS_FIELDS;\n var patternsData = objectGet(options.metadata, [address.countryCode, \"transform_mapping\", \"transform_properties\", \"patterns\"]);\n return _transformAddress({\n fromAddress: address,\n fromAddressFields: fromAddressFields,\n patternsData: patternsData,\n transformMapping: transformMapping\n });\n}\n\n/**\n * Function that converts high resolution address to portable (low resolution)\n * @param {Object} address - address object that needs to be converted to portable\n * @param {Object} options - object with following details:\n * metadata: object that has all the details for the countryCode territory\n * @returns {Object}\n */\nfunction convertPortableAddressWithDetailsToPortable(address, options) {\n if (address === void 0) {\n address = {};\n }\n if (options === void 0) {\n options = {};\n }\n if (!Object.keys(address).length || !options.metadata) {\n return null;\n }\n var transformMapping = metadataTransformMapping(options.metadata, address.countryCode, \"detailed\", ADDRESS_TRANSFORM_TYPES.PORTABLE);\n return portableAddressDetailedToRegular(address, transformMapping);\n}\n\n/**\n * Function that converts high resolution address to coarse\n * @param {Object} address - address object that needs to be converted to coarse\n * @param {Object} options - object with following details:\n * metadata: object that has all the details for the countryCode territory\n * @returns {Object}\n */\nfunction convertPortableAddressWithDetailsToCoarse(address, options) {\n if (address === void 0) {\n address = {};\n }\n if (options === void 0) {\n options = {};\n }\n if (!Object.keys(address).length || !options.metadata) {\n return null;\n }\n var portableAddress = convertPortableAddressWithDetailsToPortable(address, options);\n var coarseAddress = convertAddress(portableAddress, {\n metadata: options.metadata,\n from: ADDRESS_TRANSFORM_TYPES.PORTABLE,\n to: ADDRESS_TRANSFORM_TYPES.COARSE\n });\n return coarseAddress;\n}\nfunction metadataTransformMapping(metadata, territory, fromType, toType) {\n return objectGet(metadata, [territory, \"transform_mapping\", fromType + \"_to_\" + toType]);\n}\nfunction portableAddressDetailedToRegular(address, detailedToPortableTransformMapping) {\n var addressLines = convertDetailedAddressInfoToLines(address, detailedToPortableTransformMapping);\n var transformMappingCopy = Object.assign({}, detailedToPortableTransformMapping);\n delete transformMappingCopy.addressLines;\n var transformedAddress = detailedToPortableTransformMapping ? _transformAddress({\n fromAddress: address,\n fromAddressFields: PORTABLE_ADDRESS_WITH_DETAILS_FIELDS,\n patternsData: {},\n transformMapping: transformMappingCopy\n }) : {};\n // Merge transformed and original: transformed fields take precedence over original fields.\n var merged = PORTABLE_ADDRESS_FIELDS.reduce(function (merged, field) {\n var value = transformedAddress[field] || address[field];\n if (value) {\n merged[field] = value;\n }\n return merged;\n }, {});\n return Object.assign({}, merged, addressLines);\n}\nfunction _transformAddress(props) {\n var fromAddress = props.fromAddress;\n var fromAddressFields = props.fromAddressFields;\n var patternsData = props.patternsData;\n var transformMapping = props.transformMapping;\n var patternsRe = {};\n var patternsMatchElement = {};\n var processPatternTransforms = function processPatternTransforms(toField, lineItem) {\n return lineItem.replace(/^patterns\\.(.*?)\\.\\$([0-9])$/, function (garbage, fromField, matchElement) {\n patternsRe[toField] = new RegExp(\"^\" + patternsData[fromField] + \"$\");\n patternsMatchElement[toField] = +matchElement;\n return fromField;\n });\n };\n return Object.keys(transformMapping).map(function (toField) {\n var line = transformMapping[toField];\n line = line.map(processPatternTransforms.bind(null, toField));\n var parts = toParts(fromAddress, fromAddressFields, line);\n return {\n toField: toField,\n value: collapseParts(parts)\n };\n }).filter(function (pair) {\n return pair.value !== \"\";\n }).reduce(function (toAddress, pair) {\n var match;\n var toField = pair.toField;\n var value = pair.value;\n\n // Patterns processing.\n if (patternsRe[toField]) {\n match = value.match(patternsRe[toField]);\n value = match[patternsMatchElement[toField]];\n }\n if (value) {\n toAddress[toField] = value;\n }\n return toAddress;\n }, {});\n}\n\n/**\n * Return an address line \"parts\".\n * @param {Object} address the address object.\n * @param {array} addressFields list of fields of the address (according to its type).\n * @param {array} line metadata layout line\n * @return {array} the line parts populated with values from the address object.\n * [\n * { type: 'address_line_1', value: '123 Smith Dr.' }\n * ]\n */\nfunction toParts(address, addressFields, line) {\n // loop over fields in this line\n return line.map(function (field) {\n // if the field name from the metadata doesn't match one of the display fields,\n // then it's just a literal separator\n if (addressFields.indexOf(field) === -1) {\n return {\n type: \"separator\",\n value: field\n };\n }\n return {\n // Note: using `objectGet` due to portable address detailed fields like addressDetails.street_name.\n type: field,\n value: objectGet(address, field.split(\".\"))\n };\n });\n}\n\n/**\n * Given a line parts array like this:\n * [\n * { type: 'admin_area_2', value: 'San Jose' },\n * { type: 'separator', value: ', ' },\n * { type: 'admin_area_1', value: 'CA' },\n * ...\n * ]\n * Collapse it into a string but without any consecutive, initial, or trailing separators\n *\n * @param {array} parts\n * @return {string} the line parts array collapsed into a string\n */\nfunction collapseParts(parts) {\n return parts.filter(function (part) {\n // filter any blank values\n return part.value;\n }).filter(function (part, index, array) {\n // filter any consecutive separators\n // skip non-separators\n if (part.type !== \"separator\") {\n return true;\n }\n // filter a separator if the next part is going to be a separator\n if (array[index + 1] && array[index + 1].type === \"separator\") {\n return false;\n }\n return true;\n }).filter(function (part, index, array) {\n // filter any initial or final separator\n // skip non-separators\n if (part.type !== \"separator\") {\n return true;\n }\n\n // filter any line-initial or line-final separators\n if (index === 0 || index === array.length - 1) {\n return false;\n }\n return true;\n }).reduce(function (lineString, part) {\n // combine all 'value' properties into a single string\n return lineString += part.value;\n }, \"\");\n}\n\n/**\n * Helper function to convert addressDetails part of the address object to an object\n * with addressLines properties.\n * @param {Object} addressData - object containing address data\n * @param {Object} addressMapping - object containing which fields of address details maps to which address lines\n * @returns {Object}\n */\nfunction convertDetailedAddressInfoToLines(addressData, transformMapping) {\n if (addressData === void 0) {\n addressData = {};\n }\n if (transformMapping === void 0) {\n transformMapping = {};\n }\n if (!addressData.addressDetails || !transformMapping.addressLines) {\n return null;\n }\n var addressLines = transformMapping[\"addressLines\"].map(function (addressLine) {\n var parts = toParts(addressData, PORTABLE_ADDRESS_WITH_DETAILS_FIELDS, addressLine);\n return collapseParts(parts);\n }).filter(function (value) {\n return value !== \"\";\n });\n\n /**\n * When we are converting from high resolution to low resolution address and address line array is [\"\", \"sample address line 2\", \"\"],\n * then AddressConvert api will return addressLine1 as sample address line 2. But when we call AddressFormat.formatToParts(),\n * then addressLine1 will still be \"\" (empty) and addressLine2 will be sample address line 2.\n */\n\n return addressLines.reduce(function (object, item, index) {\n object[\"addressLine\" + (index + 1)] = item;\n return object;\n }, {});\n}\n\n/**\n * Actual PersonNameFormat implementation. The idea is the this whole file\n * becomes open source.\n */\nvar ADDRESS_LINES = [\"addressLine1\", \"addressLine2\", \"addressLine3\"];\nvar elements = {\n portable: ADDRESS_LINES.concat([\"adminArea4\", \"adminArea3\", \"adminArea2\", \"adminArea1\", \"postalCode\", \"countryCode\", \"addressDetails.buildingName\", \"addressDetails.deliveryService\", \"addressDetails.streetName\", \"addressDetails.streetNumber\", \"addressDetails.streetType\", \"addressDetails.subBuilding\"]),\n coarse: [\"line1\", \"line2\", \"state\", \"city\", \"postalCode\", \"postcode\", \"countryCode\", \"country\"]\n};\nfunction joinPartsValues(parts) {\n return parts.map(function (_ref3) {\n var value = _ref3.value;\n return value;\n }).join(\"\");\n}\nvar unsupportedCountryCodeRe = /Unsupported value for address.country_code/;\nfunction transformAddress$1(address, options, addressMetadata) {\n try {\n return transformAddress(address, options, addressMetadata);\n } catch (error) {\n if (unsupportedCountryCodeRe.test(error.message)) {\n throw new Error(\"You have not loaded metadata for \" + error.attributes.countryCode + \" country\");\n }\n throw error;\n }\n}\n\n/**\n * Given:\n * - stringLayout: \"{foo} {bar}\"\n * - stringLayouts:\n * {\n * \"bar\": \"{a} {b.c}\"\n * }\n * Returns:\n * [\n * {\n * \"type\": \"foo\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"bar\",\n * \"parts\": [\n * {\n * \"type\": \"a\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"b.c\"\n * }\n * ]\n * }\n * ]\n */\n// TODO: Find a better place for common functions between address and name\nfunction stringLayoutToPartsLayout(stringLayout, stringLayouts, checkStringLayouts) {\n if (stringLayouts === void 0) {\n stringLayouts = {};\n }\n if (checkStringLayouts === void 0) {\n checkStringLayouts = true;\n }\n var partsLayout = [];\n var lastMatchPos = 0;\n\n // For every matching variable (e.g., \"{foo}\"), add two parts: the literal\n // that precedes it and the matching type variable (e.g., { type: \"foo\" }).\n stringLayout.replace(/{[^}]+}/g, function (match, pos) {\n partsLayout.push({\n type: \"literal\",\n value: stringLayout.slice(lastMatchPos, pos)\n });\n var type = match.slice(1, -1);\n var part = {\n type: type\n };\n if (checkStringLayouts && stringLayouts[type]) {\n part.parts = stringLayoutToPartsLayout(stringLayouts[type], stringLayouts, false);\n }\n partsLayout.push(part);\n lastMatchPos = pos + match.length;\n });\n partsLayout.push({\n type: \"literal\",\n value: stringLayout.slice(lastMatchPos)\n });\n\n // Remove empty literals.\n return partsLayout.filter(function (_ref4) {\n var type = _ref4.type,\n value = _ref4.value;\n return type !== \"literal\" || value;\n });\n}\nvar DEFAULT_SCRIPT_FALLBACK = \"Latn\";\n/**\n * Returns the object script, which is:\n * - `undefined` if the string is empty,\n * - `\"Latin\"` if the whole string is Latin, or\n * - The regionDefaultScript if string contains any non-Latin (because it's easier to do this than to\n * identify which script it really is AND it's assertive in our case).\n */\nfunction getStringScript(string, regionDefaultScript) {\n if (!string.length) {\n return;\n }\n for (var _iterator = _createForOfIteratorHelperLoose(string), _step; !(_step = _iterator()).done;) {\n var ch = _step.value;\n if (ch.charCodeAt(0) > 0x24f) {\n return regionDefaultScript;\n }\n }\n return \"Latn\";\n}\n\n/**\n * Helper function that determines what script should be used to format the address and name.\n * Determination rules and fallbacks are as follows:\n * 1. For address region with region default script as non Latn script and if address/name object contain non Latn script characters, then use non Latn script if supported by address region.\n * 2. If address object scipt is not supported for addressRegion or we don't have the metadata for that script,\n * then fallback to the primary_script for addressRegion identified in G11nMetadata\n * 3. if for some reason we don't have address layout metadata for the primary_script identified in G11nMetadata for primary_script,\n * then fallback to 'Latn' as we always have address layout for Latn script\n * @param {Object} stringLayouts an object containing layouts for all the scripts for addressRegion\n * @param {Object} options object with additional properties for identifying the final script that should be used\n * @returns {Object} an object with the address layout based on script identified by above rules\n */\nvar getLayoutFromScript = function getLayoutFromScript(stringLayouts, options) {\n if (stringLayouts === void 0) {\n stringLayouts = {};\n }\n if (options === void 0) {\n options = {};\n }\n if (!Object.keys(stringLayouts).length || !options.primaryScript) {\n return null;\n }\n var _options2 = options,\n finalScript = _options2.finalScript,\n primaryScript = _options2.primaryScript;\n return stringLayouts[finalScript] || stringLayouts[primaryScript] || stringLayouts[DEFAULT_SCRIPT_FALLBACK];\n};\n\n/**\n * Actual formatToParts function.\n *\n * @param {String} address A portable or coarse address.\n * @param {String} options.allowedValues Object of address elements and their allowed values array key-value pairs\n * @param {String} options.regionDefaultScript Region default script\n * @param {String} options.localeScript Locale script\n * @param {Object} options.stringLayouts Metadata for the chosen style, e.g.:\n * {\n * \"addressLine1\": \"{addressDetails.streetType} {addressDetails.streetName}, {addressDetails.streetNumber}\",\n * \"addressLine2\": \"{addressDetails.subBuilding}\",\n * \"Latn\": \"{addressLine1}\\n{addressLine2}\\n{addressLine3}\\n{adminArea2} {adminArea1}\\n{countryCode}\"\n * }\n * TODO Should we process stringLayouts at constructor level and pass partsLayout here instead?\n * @param {Object} options.supportedScripts Supported scripts array.\n * @param {Object} options.transforms Transform functions, e.g.:\n * {\n * \"adminArea1\": \"uppercase\"\n * }\n * TODO Should we process transformations at constructor level and pass the below here instead?\n * {\n * \"adminArea1\": value => value.toUpperCase()\n * }\n * @param {String} options.type Address type (portable or coarse)\n * @param {Object} requiredValues Object of address elements and their required values array key-value pairs\n * @param {Object} hiddenValues Object of address elements and their hidden values array key-value pairs\n *\n * @return {Array} Formatted address parts.\n */\nfunction addressFormatToParts(address, _ref5, nameParts, _ref6) {\n var _this = this;\n var recipient = _ref5.recipient,\n businessName = _ref5.businessName;\n var _ref6$allowedValues = _ref6.allowedValues,\n allowedValues = _ref6$allowedValues === void 0 ? {} : _ref6$allowedValues,\n internationalRegionName = _ref6.internationalRegionName,\n regionDefaultScript = _ref6.regionDefaultScript,\n localeScript = _ref6.localeScript,\n stringLayouts = _ref6.stringLayouts,\n supportedScripts = _ref6.supportedScripts,\n transforms = _ref6.transforms,\n type = _ref6.type,\n _ref6$requiredValues = _ref6.requiredValues,\n requiredValues = _ref6$requiredValues === void 0 ? {} : _ref6$requiredValues,\n _ref6$hiddenValues = _ref6.hiddenValues,\n hiddenValues = _ref6$hiddenValues === void 0 ? {} : _ref6$hiddenValues,\n _ref6$disabledValues = _ref6.disabledValues,\n disabledValues = _ref6$disabledValues === void 0 ? {} : _ref6$disabledValues,\n _ref6$presetValue = _ref6.presetValue,\n presetValue = _ref6$presetValue === void 0 ? {} : _ref6$presetValue,\n language = _ref6.language;\n var addressCopy = Object.assign({}, address);\n if (type === \"coarse\") {\n addressCopy = oldGriffinCoarseSupport$1(addressCopy);\n }\n var addressScript;\n\n // Optimization:\n // If the region default script is different than \"Latn\", check address.\n // Otherwise, not needed, it's always going to be \"Latn\".\n if (regionDefaultScript === \"Latn\") {\n addressScript = \"Latn\";\n } else {\n addressScript = getStringScript(Object.entries(addressCopy).filter(function (_ref7) {\n var elementType = _ref7[0];\n return isProperty[type][elementType];\n }).map(function (_ref8) {\n var value = _ref8[1];\n return value;\n }).join(\"\"), regionDefaultScript);\n }\n\n /**\n * finalScript is determined in following preference order:\n * 1. address script : if address object is not empty then use address script\n * 2. locale script : if address is empty then fallback to locale script\n * 3. region default script: if locale script is not supported then fallback to region's default script\n * 4. Latn : if region default script is unavailable then fallback to Latn\n * For example:\n * 1. in ja-JP locale script is JPAN and address object is empty then state value should be in JPAN\n * 2. in en-JP locale script is LATN and address object is empty then state value should be in LATN\n * 3. in ar-EG locale script is ARAB and for GR ARAB is not supported script so it will fallback to LATN (region's default script)\n */\n var finalScript = addressScript || (supportedScripts.includes(localeScript) ? localeScript : regionDefaultScript || \"Latn\");\n if (internationalRegionName) {\n addressCopy.countryCode = internationalRegionName;\n }\n if (businessName) {\n addressCopy.businessName = businessName;\n }\n if (transforms) {\n Object.entries(transforms).filter(function (_ref9) {\n var element = _ref9[0];\n return addressCopy[element];\n }).forEach(function (_ref10) {\n var element = _ref10[0],\n transformList = _ref10[1];\n return transformList.forEach(function (transform) {\n addressCopy[element] = transformFns[transform](addressCopy[element]);\n });\n });\n }\n\n // The address script determines the layout (e.g., latin vs Japanese), but the\n // user region determines the supported scripts (e.g., on US only latin\n // addresses are supported, on JP both latin and Japanese are supported).\n var stringLayout = getLayoutFromScript(stringLayouts, {\n primaryScript: regionDefaultScript,\n finalScript: finalScript\n });\n\n // For some regions for example \"CA\", \"CH\", \"ID\"\n // It is possible to have localized state list in different language where the script is Latn only.\n // e.g. stateList in en-ID and id-ID are in two language, but the script is Latn only.\n // So, we need to check if a particular language entry is existed or not, if not fall back to `default`.\n allowedValues = allowedValues[finalScript] ? allowedValues[finalScript][language] || allowedValues[finalScript][\"default\"] || {} : {};\n\n // Override string presetValue\n Object.keys(presetValue).forEach(function (property) {\n if (typeof presetValue[property] == \"string\" && property !== \"countryCode\") {\n addressCopy[property] = presetValue[property];\n }\n });\n var partsLayout = stringLayout.split(\"\\n\").map(function (stringLayout) {\n var parts = stringLayoutToPartsLayout(stringLayout, stringLayouts);\n if (!internationalRegionName) {\n parts = parts.filter(function (_ref11) {\n var type = _ref11.type;\n return type !== \"countryCode\";\n });\n }\n fillParts(parts, allowedValues, requiredValues, hiddenValues, disabledValues);\n parts = filterDisabledParts(parts);\n return {\n type: \"line\",\n parts: parts\n };\n }).filter(function (_ref12) {\n var parts = _ref12.parts;\n return parts.length;\n });\n\n // TODO Transform (at constructor-time) partsLayout to include recipient\n // localized layout. Then we don't need this extra block and everything\n // happens naturally in fill() above.\n if (recipient) {\n partsLayout.forEach(function (parentPart) {\n var _parentPart$parts = parentPart.parts,\n parts = _parentPart$parts === void 0 ? [] : _parentPart$parts;\n parts.forEach(function (part) {\n if (part.type === \"recipient\") {\n var _parts = _this.personNameFormatterSingleton().formatToParts(recipient);\n part.parts = _parts;\n part.value = joinPartsValues(_parts);\n }\n return part;\n });\n });\n }\n return fill(partsLayout, addressCopy);\n}\nfunction filterDisabledParts(parts) {\n if (parts) {\n parts = parts.filter(function (_ref13) {\n var disabled = _ref13.disabled;\n return !disabled;\n });\n parts.forEach(function (part) {\n if (part && part.parts) {\n part.parts = filterDisabledParts(part.parts);\n }\n });\n }\n return parts;\n}\nfunction fillParts(parts, allowedValues, requiredValues, hiddenValues, disabledValues) {\n if (allowedValues === void 0) {\n allowedValues = {};\n }\n if (requiredValues === void 0) {\n requiredValues = {};\n }\n if (hiddenValues === void 0) {\n hiddenValues = {};\n }\n if (disabledValues === void 0) {\n disabledValues = {};\n }\n if (parts) {\n parts.filter(function (_ref14) {\n var type = _ref14.type;\n return type in allowedValues;\n }).forEach(function (part) {\n return part.allowedValues = allowedValues[part.type];\n });\n // setting `required` property only when it is set to true\n parts.filter(function (_ref15) {\n var type = _ref15.type;\n return type in requiredValues && requiredValues[type];\n }).forEach(function (part) {\n return part.required = true;\n });\n // setting `hidden` property\n parts.filter(function (_ref16) {\n var type = _ref16.type;\n return type in hiddenValues && hiddenValues[type];\n }).forEach(function (part) {\n return part.hidden = true;\n });\n parts.filter(function (_ref17) {\n var parts = _ref17.parts;\n return parts;\n }).forEach(function (part) {\n return fillParts(part.parts, allowedValues, requiredValues, hiddenValues, disabledValues);\n });\n // setting `disabled` property\n parts.filter(function (_ref18) {\n var type = _ref18.type;\n return type in disabledValues && disabledValues[type];\n }).forEach(function (part) {\n return part.disabled = true;\n });\n parts.filter(function (_ref19) {\n var parts = _ref19.parts;\n return parts;\n }).forEach(function (part) {\n return fillParts(part.parts, allowedValues, requiredValues, hiddenValues, disabledValues);\n });\n }\n return parts;\n}\n\n/**\n * Returns a coarse address (using postalCode and countryCode) when given an\n * old (actually griffin-node) coarse address (using postcode and country).\n * Note: modifies passed address (not a problem since we pass a clone).\n */\nfunction oldGriffinCoarseSupport$1(address) {\n var postcode = address.postcode,\n country = address.country;\n return Object.assign(address, postcode && {\n postalCode: postcode\n }, country && {\n countryCode: country\n });\n}\n\n/**\n * Given:\n * - partsLayout:\n * [\n * {\n * \"type\": \"foo\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"bar\",\n * \"parts\": [\n * {\n * \"type\": \"a\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"b.c\"\n * }\n * ]\n * }\n * ]\n * - object:\n * {\n * \"foo\": \"Foo\",\n * \"a\": \"Aaa\",\n * \"b\": {\n * \"c\": \"Bbb\"\n * }\n * }\n * Returns:\n * [\n * {\n * \"type\": \"foo\",\n * \"value\": \"Foo\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"bar\",\n * \"value\": \"Aaa Bbb\",\n * \"parts\": [\n * {\n * \"type\": \"a\",\n * \"value\": \"Aaa\"\n * },\n * {\n * \"type\": \"literal\",\n * \"value\": \" \"\n * },\n * {\n * \"type\": \"b.c\",\n * \"value\": \"Bbb\"\n * }\n * ]\n * }\n * ]\n */\nfunction fill(partsLayout, object) {\n var result = partsLayout.map(function (_ref20) {\n var type = _ref20.type,\n parts = _ref20.parts,\n value = _ref20.value,\n etc = _objectWithoutPropertiesLoose(_ref20, _excluded);\n if (type !== \"literal\") {\n if (parts) {\n parts = fill(parts, object);\n value = joinPartsValues(parts);\n }\n if (!value) {\n value = objectGet(object, type) || \"\";\n }\n }\n return Object.assign(Object.assign({\n type: type,\n value: value\n }, etc), parts && {\n parts: parts\n });\n });\n result = removeExtraLiterals(result);\n return result;\n}\n\n/**\n * isProperty is a hash of the form: { : true }, which makes easier to\n * check if a string is one of the elements listed above.\n */\nvar isProperty = shallowMerge(Object.entries(elements).map(function (_ref21) {\n var _ref23;\n var type = _ref21[0],\n elements = _ref21[1];\n return _ref23 = {}, _ref23[type] = shallowMerge(elements.map(function (field) {\n var _ref22;\n return _ref22 = {}, _ref22[field] = true, _ref22;\n })), _ref23;\n}));\nvar transformFns = {\n uppercase: function uppercase(value) {\n return value.toUpperCase();\n }\n};\n\n/**\n * Given an object with properties and an array of valid string property names,\n * Clone the object and:\n * 1) Remove invalid properties,\n * 2) Remove non-string properties,\n * 3) Remove properties with only whitespace,\n * 4) Trim remaining string properties\n *\n * @param {Object} object the object to trim\n * @param {array} properties array of properties to preserve\n *\n * @return {Object} the cloned & trimmed object\n */\nfunction trimObject(object, properties) {\n var clonedObject = {};\n properties.forEach(function (property) {\n var value = object[property];\n if (value === undefined) {\n return;\n }\n if (typeof value === \"string\") {\n value = value.trim();\n }\n clonedObject[property] = value;\n });\n return clonedObject;\n}\nvar ENVIRONMENT = {\n PRODUCTION: \"production\"\n};\n\n/**\n * The core validateAddress function\n * @param {Object} address See README for details.\n * @param {Object} type See README for details.\n * @returns See README for details.\n * @example See README for details.\n */\nfunction validateAddress(address, type, properties, options) {\n var _retErrors;\n // address\n assertAddress(address);\n var retErrors = [];\n Object.defineProperty(retErrors, \"errors\", {\n get: function get() {\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n var errorMsg = \"Please note that errors are no longer returned as an object, instead they are returned as an array. \" + \"From now on, please access the array directly rather than through the errors property. For more information, please read here: \" + \"https://github.paypal.com/pages/Globalization-R/worldready-js/docs/address-api.html#addressformatprototypevalidateaddressobj\";\n console.warn(errorMsg);\n }\n return this;\n }\n });\n var fields = type === ADDRESS_TYPES.PORTABLE ? PORTABLE_ADDRESS_WITH_DETAILS_FIELDS : COARSE_ADDRESS_FIELDS;\n if (type === ADDRESS_TYPES.COARSE) {\n address = oldGriffinCoarseSupport(address);\n }\n address = trimAddress(address, type);\n\n // Get errors from _validateAddress and push them\n (_retErrors = retErrors).push.apply(_retErrors, _validateAddress(address, fields, properties, Object.assign({}, options, {\n type: type\n })));\n if (type === ADDRESS_TYPES.PORTABLE) {\n // If non address lines error exist then return errors.\n var nonAddressLineError = retErrors.filter(function (error) {\n return !error.element.includes(\"addressLine\") && !error.element.includes(\"Details\");\n });\n if (nonAddressLineError.length) {\n return retErrors;\n }\n var addressLineErrors = retErrors.filter(function (error) {\n return error.element.includes(\"addressLine\");\n });\n\n // If there are any errors that are identified for non-required fields (non-field level checks),\n // then we want to return those errors directly.\n var errors = retErrors.filter(function (error) {\n return error.code !== ADDRESS_ERROR_CODES.MISSING_ONE_OF && error.code !== ADDRESS_ERROR_CODES.MISSING_REQUIRED;\n });\n if (errors && errors.length) {\n return retErrors;\n }\n var highResProperties = Object.keys(properties.required).filter(function (field) {\n return field.includes(\"addressDetails\");\n });\n // if addressLine (low res) error exist and high resolution properties\n // are not in required properties then return error.\n if (highResProperties.length === 0 && addressLineErrors.length !== 0) {\n return retErrors;\n }\n var detailErrors = retErrors.filter(function (error) {\n return error.element.includes(\"Details\");\n });\n // if detailErrors or addressLineErrors length is zero, this means\n // either address is valid high or low resolution address.\n if (detailErrors.length === 0 || addressLineErrors.length === 0) {\n retErrors = [];\n }\n }\n return retErrors;\n}\nfunction _validateAddress(address, fields, properties, options) {\n if (options === void 0) {\n options = {};\n }\n var isRequiredAlgebraValidResult = isRequiredAlgebraValid(address, getRequiredAlgebra(properties));\n return fields.reduce(function (errors, field) {\n return errors.concat(validateField(address, field, properties, Object.assign({}, options, {\n isRequiredAlgebraValidResult: isRequiredAlgebraValidResult\n })));\n }, []);\n}\nfunction getRequiredAlgebra(properties) {\n return typeof properties.requiredAlgebra === \"string\" ? properties.requiredAlgebra : null;\n}\nfunction trimAddress(address, type) {\n // pare down to only relevant fields and trim string fields themselves\n // remove full_name and business_name because those values are passed in via options.name and options.organization\n var addressEntryFields = type === ADDRESS_TYPES.PORTABLE ? PORTABLE_ADDRESS_FIELDS.concat(\"addressDetails\") : COARSE_ADDRESS_FIELDS;\n return trimObject(address, addressEntryFields);\n}\nfunction isRequiredAlgebraValid(address, requiredAlgebra) {\n if (!requiredAlgebra) {\n return false;\n }\n return requiredAlgebra.split(\"||\").some(function (group) {\n return group.split(\"&&\").every(function (field) {\n return objectGet(address, field.trim());\n });\n });\n}\n/**\n * Validates a specific field (`field` parameter, e.g. 'address_line_1') of the passed `address` object\n * based on the metadata `properties`.\n */\nfunction validateField(address, field, properties, options) {\n if (options === void 0) {\n options = {};\n }\n var _options3 = options,\n type = _options3.type,\n isRequiredAlgebraValidResult = _options3.isRequiredAlgebraValidResult;\n var requiredAlgebra = getRequiredAlgebra(properties);\n var required = properties.required ? properties.required[field] : null;\n var validationRegex = properties.validationRegex ? properties.validationRegex[field] : null;\n var offensiveWordRegex = getOffensiveWordRegex(properties, {\n field: field,\n type: type\n });\n var validListRegex = getValidListRegex(properties, {\n field: field,\n type: type\n });\n var applyRequiredAlgebra = requiredAlgebra && requiredAlgebra.includes(field) ? true : false;\n var errors = [];\n var fieldValue = objectGet(address, field.split(\".\"));\n\n // Check for offensive word pattern, po box & rural route in an address field\n // NOTE: This check should be performed on non-required fields as well\n if (field && fieldValue) {\n if (!isAddressFieldInValidList(fieldValue, validListRegex)) {\n var offensiveWordError = validateAddressFieldForOffensiveTerms(field, fieldValue, offensiveWordRegex);\n if (offensiveWordError && offensiveWordError.length) {\n errors.push.apply(errors, offensiveWordError);\n }\n if (!COUNTRIES_TO_IGNORE_FOR_PO_BOX_VALIDATION.includes(address.countryCode)) {\n var poBoxErrors = performPoBoxValidation(field, fieldValue, Object.assign({}, options, {\n type: type,\n addressValidations: properties.addressValidations\n }));\n if (poBoxErrors && poBoxErrors.length) {\n errors.push.apply(errors, poBoxErrors);\n }\n }\n var ruralRouteErrors = performRuralRouteValidation(field, fieldValue, Object.assign({}, options, {\n addressValidations: properties.addressValidations\n }));\n if (ruralRouteErrors && ruralRouteErrors.length) {\n errors.push.apply(errors, ruralRouteErrors);\n }\n }\n }\n if (!required && !validationRegex && !applyRequiredAlgebra) {\n return errors;\n }\n if (applyRequiredAlgebra && !isRequiredAlgebraValidResult) {\n errors.push({\n code: ADDRESS_ERROR_CODES.MISSING_ONE_OF,\n element: field,\n requiredAlgebra: requiredAlgebra\n });\n }\n // Check for missing required address properties.\n if (!applyRequiredAlgebra && required && !fieldValue) {\n errors.push({\n code: ADDRESS_ERROR_CODES.MISSING_REQUIRED,\n element: field\n });\n }\n\n // Check for invalid postal code.\n if (field === \"postalCode\" && validationRegex) {\n // TODO Create the regular expression instance once elsewhere, not in here everytime.\n var re = new RegExp(\"^\" + validationRegex + \"$\");\n if (fieldValue && !re.test(fieldValue)) {\n errors.push({\n code: ADDRESS_ERROR_CODES.INVALID_PATTERN,\n element: field\n });\n }\n }\n return errors;\n}\n\n/**\n * Utility function to perform po box validation\n * @param {String} field address field (addressLine1, addressLine2, etc.)\n * @param {String} value value of the address field\n * @param {Object} options an object which contains following props\n * - type: coarseAddressData | portableAddressData\n * - addressType: shipping | mailing | primary\n * - addressValidations: an object that contains regex pattern to be used for validation\n * - addressRegion: two letter address region code (US, GB, etc.)\n * @returns {Array} returns an array with error code if the address field value contains po box\n */\nfunction performPoBoxValidation(field, value, options) {\n var type = options.type,\n addressType = options.addressType,\n addressValidations = options.addressValidations,\n addressRegion = options.addressRegion;\n var poBoxValidations = addressValidations.default.poBox.territory[addressRegion];\n if (!poBoxValidations) {\n return [];\n }\n var addressTypesForPoBoxValidation = poBoxValidations.address_type;\n var regexInfo = getPoBoxRegex(poBoxValidations, field, type);\n if (regexInfo && regexInfo.pattern && regexInfo.flags) {\n var regex = new RegExp(regexInfo.pattern, regexInfo.flags);\n if (addressTypesForPoBoxValidation.includes(addressType) && regex.test(value)) {\n return [{\n code: ADDRESS_ERROR_CODES.ADDRESS_CONTAINS_PO_BOX,\n element: field\n }];\n }\n }\n return [];\n}\nfunction getPoBoxRegex(source, field, type) {\n if (!source || !type || !field) {\n return null;\n }\n var result = source.layout_type[type] || source.layout_type.default;\n result = result.properties[field] || result.properties.default;\n return result;\n}\n\n/**\n * Utility function to perform rural route validations\n * @param {String} field address field (addressLine1, addressLine2, etc.)\n * @param {String} value value of the address field\n * @param {Object} options an object which contains following props\n * - addressType: shipping | mailing | primary\n * - addressValidations: an object that contains regex pattern to be used for validation\n * - addressRegion: two letter address region code (US, GB, etc.)\n * - addressData: portableAddressData | coarseAddressData\n * @returns {Array} returns an array with error code if the address field value contains rural route\n */\nfunction performRuralRouteValidation(field, fieldValue, options) {\n var addressType = options.addressType,\n addressValidations = options.addressValidations,\n addressRegion = options.addressRegion,\n addressData = options.addressData,\n ruralRouteValidations = addressValidations[addressData].ruralRoute[addressRegion];\n if (!ruralRouteValidations || !Object.keys(ruralRouteValidations).length) {\n return [];\n }\n var addressTypesForRuralRouteValidation = ruralRouteValidations.address_type,\n regexInfo = getRuralRouteRegex(ruralRouteValidations, field);\n if (regexInfo && regexInfo.pattern && regexInfo.flags) {\n var regex = new RegExp(regexInfo.pattern, regexInfo.flags);\n if (addressTypesForRuralRouteValidation.includes(addressType) && regex.test(fieldValue)) {\n return [{\n code: ADDRESS_ERROR_CODES.ADDRESS_CONTAINS_RURAL_ROUTE,\n element: field\n }];\n }\n }\n return [];\n}\nfunction getRuralRouteRegex(source, field) {\n if (!source || !field) {\n return;\n }\n return source.properties[field] || source.properties.default;\n}\nfunction getOffensiveWordRegex(properties, options) {\n if (options === void 0) {\n options = {};\n }\n if (!properties || !options.field) {\n return null;\n }\n var _options4 = options,\n field = _options4.field,\n type = _options4.type;\n var result = properties.addressValidations[type] || properties.addressValidations.default;\n result = result.offensive.pattern[field] || result.offensive.pattern.default || null;\n return result;\n}\nfunction getValidListRegex(properties, options) {\n if (options === void 0) {\n options = {};\n }\n if (!properties || !options.field) {\n return null;\n }\n var _options5 = options,\n field = _options5.field,\n type = _options5.type;\n var result = properties.addressValidations[type] || properties.addressValidations.default;\n result = result.validList[field] || result.validList.default || null;\n return result;\n}\nfunction isAddressFieldInValidList(fieldValue, validListRegex) {\n if (fieldValue === void 0) {\n fieldValue = \"\";\n }\n if (validListRegex === void 0) {\n validListRegex = \"\";\n }\n if (fieldValue === \"\" || validListRegex === \"\") {\n return false;\n }\n validListRegex = new RegExp(\"^(\" + validListRegex + \")$\", \"i\");\n if (validListRegex.test(fieldValue.toLowerCase())) {\n return true;\n }\n return false;\n}\nfunction validateAddressFieldForOffensiveTerms(field, fieldValue, offensiveWordRegex) {\n if (field === void 0) {\n field = \"\";\n }\n if (fieldValue === void 0) {\n fieldValue = \"\";\n }\n if (field === \"\" || fieldValue === \"\" || !offensiveWordRegex || offensiveWordRegex === \"\") {\n return null;\n }\n var regex = new RegExp(\"\\\\b\" + offensiveWordRegex + \"+\\\\b\", \"i\");\n if (fieldValue && regex.test(fieldValue)) {\n return [{\n code: ADDRESS_ERROR_CODES.INVALID_ALL_OFFENSIVE,\n element: field\n }];\n }\n return null;\n}\nvar getMissingMetadataError = function getMissingMetadataError(path) {\n var message = \"Missing WorldReady metadata, please refer to https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about-load-worldready-data.html\";\n if (path) {\n message += \"\\nPath: \" + path;\n }\n return new Error(message);\n};\nfunction validateCldr(path, value, options) {\n if (options === void 0) {\n options = {\n skip: []\n };\n }\n var skipBoolean = options.skip.some(function (regex) {\n return regex.test(path);\n });\n if (skipBoolean) {\n return;\n }\n if (value === undefined) {\n throw getMissingMetadataError(path);\n }\n}\nvar countryAliasMapping = {\n C2: \"CN\",\n UK: \"GB\"\n};\nfunction getResolvedRegion(region) {\n return countryAliasMapping[region] || region;\n}\nvar assertAddress$1, addressFormatToPartsAsserts;\nfunction validateRequiredCldr(path, value) {\n validateCldr(path, value, {\n skip: [/supplemental\\/[A-Za-z]*\\/[A-Z]{2}\\/maxLength/, /supplemental\\/[A-Za-z]*\\/[A-Z]{2}\\/validationRegex/, /supplemental\\/[A-Za-z]*\\/[A-Z]{2}\\/requiredAlgebra/]\n });\n}\nvar AddressFormat = /*#__PURE__*/function () {\n function AddressFormat(worldReady, options) {\n var _this2 = this;\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(worldReady, \"worldReady\", [\"object\", \"plain object\"]);\n if (!isWorldReadyInstance(worldReady)) {\n throw new Error(\"DEPRECATED WARNING: AddressFormat API has changed for consistency with other formatters, see our updated docs for more information.\\nFix your code by using:\\n\" + (\"new AddressFormat(new WorldReady(\\\"\" + worldReady.language + \"-\" + worldReady.region + \"\\\"), \" + JSON.stringify(Object.assign({\n addressRegion: worldReady.region\n }, options || {})) + \")\"));\n }\n assertType(options, \"options\", [\"undefined\", \"plain object\"]);\n }\n options = options || {};\n var cldr = worldReady.globalize.cldr;\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(options.addressRegion, \"options.addressRegion\", [\"string\"]);\n this._debug_options = options;\n }\n\n // used to return localized state and city name and select address layout\n var localeScript = cldr.attributes.script;\n var addressRegion = getResolvedRegion(options.addressRegion);\n var _options6 = options,\n _options6$type = _options6.type,\n type = _options6$type === void 0 ? ADDRESS_TYPES.PORTABLE : _options6$type,\n _options6$style = _options6.style,\n style = _options6$style === void 0 ? ADDRESS_STYLES.MULTILINE : _options6$style;\n\n // Error Checks: properties\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n // Check options.type\n var availableTypes = Object.values(ADDRESS_TYPES);\n assertType(type, \"options.type\", [\"string\"]);\n assertRange(type, availableTypes, \"Invalid options.type {{value}}, expected one of {{availableTypes}}.\", {\n value: type,\n availableTypes: availableTypes\n });\n // Check options.style\n var availableStyles = Object.values(ADDRESS_STYLES);\n assertType(style, \"options.style\", [\"string\"]);\n assertRange(style, availableStyles, \"Invalid options.style {{value}}, expected one of {{availableStyles}}.\", {\n value: style,\n availableStyles: availableStyles\n });\n }\n this.type = type;\n this.addressRegion = addressRegion;\n var addressData = type + \"AddressData\";\n cldr.on(\"get\", validateRequiredCldr);\n var properties, regionDefaultScript;\n try {\n regionDefaultScript = cldr.get([\"supplemental\", COMMON_ADDRESS_DATA + \"AddressData\", addressRegion, \"primaryScript\"]);\n properties = {\n maxLength: cldr.get([\"supplemental\", addressData, addressRegion, \"maxLength\"]),\n required: cldr.get([\"supplemental\", addressData, addressRegion, \"required\"]),\n validationRegex: cldr.get([\"supplemental\", addressData, addressRegion, \"validationRegex\"]),\n requiredAlgebra: cldr.get([\"supplemental\", addressData, addressRegion, \"requiredAlgebra\"]),\n addressValidations: cldr.get([\"supplemental\", \"addressValidations\"])\n };\n } finally {\n cldr.off(\"get\", validateRequiredCldr);\n }\n var internationalRegionName;\n if (style.slice(0, 14) === \"international-\") {\n style = style.split(\"-\")[1];\n internationalRegionName = cldr.get([\"supplemental\", addressData, addressRegion, \"presetValue\", \"countryCode\"]);\n }\n var allowedValues = cldr.get([\"supplemental\", addressData, addressRegion, \"allowedValues\"]);\n var hiddenValues = cldr.get([\"supplemental\", addressData, addressRegion, \"hidden\"]);\n var disabledValues = cldr.get([\"supplemental\", addressData, addressRegion, \"disabled\"]);\n var presetValue = cldr.get([\"supplemental\", addressData, addressRegion, \"presetValue\"]);\n\n // Transforms \"multiline\" into \"multi\" and \"singleline\" into \"single\".\n style = style.slice(0, -4);\n var stringLayouts = shallowMerge([cldr.get([\"supplemental\", addressData, addressRegion, \"layouts/default\"]), cldr.get([\"supplemental\", addressData, addressRegion, \"layouts\", style])]);\n var transforms = cldr.get([\"supplemental\", addressData, addressRegion, \"transforms\"]);\n var supportedScripts = Object.keys(stringLayouts);\n this._validate = function (address, options) {\n options.addressRegion = addressRegion;\n options.addressData = addressData;\n return validateAddress(address, type, properties, options);\n };\n var instance;\n this.personNameFormatterSingleton = function () {\n if (instance) {\n return instance;\n } else {\n instance = new NameFormat(worldReady, {\n nameRegion: addressRegion\n });\n return instance;\n }\n };\n this._formatToParts = function (address, options) {\n return addressFormatToParts.call(_this2, address, options, {}, {\n allowedValues: allowedValues,\n internationalRegionName: internationalRegionName,\n regionDefaultScript: regionDefaultScript,\n localeScript: localeScript,\n stringLayouts: stringLayouts,\n supportedScripts: supportedScripts,\n transforms: transforms,\n type: type,\n requiredValues: properties.required,\n hiddenValues: hiddenValues,\n disabledValues: disabledValues,\n presetValue: presetValue,\n language: worldReady.language\n });\n };\n\n // Clone + delete required method so we can look it up from runtime cache correctly based on options\n options.addressData = addressData;\n var _options7 = options,\n requiredMethod = _options7.requiredMethod;\n var _runtimeOptions = {};\n objectDeepAssign(_runtimeOptions, options);\n delete _runtimeOptions.requiredMethod;\n this._runtimeArgs = [_runtimeOptions];\n if (requiredMethod === \"validateAddress\") {\n this._runtimeValue = {\n properties: properties,\n type: type,\n options: options,\n requiredMethod: requiredMethod\n };\n } else if (requiredMethod === \"addressFormatToParts\") {\n this._runtimeValue = {\n allowedValues: allowedValues,\n internationalRegionName: internationalRegionName,\n regionDefaultScript: regionDefaultScript,\n localeScript: localeScript,\n stringLayouts: stringLayouts,\n supportedScripts: supportedScripts,\n transforms: transforms,\n type: type,\n requiredValues: properties.required,\n hiddenValues: hiddenValues,\n disabledValues: disabledValues,\n requiredMethod: requiredMethod,\n language: worldReady.language\n };\n }\n }\n var _proto = AddressFormat.prototype;\n _proto.format = function format(address, options) {\n return this.formatToParts(address, options).filter(function (_ref24) {\n var value = _ref24.value;\n return value;\n }).map(function (_ref25) {\n var value = _ref25.value;\n return value;\n }).join(\"\\n\");\n };\n _proto.formatToParts = function formatToParts(address, options) {\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n addressFormatToPartsAsserts.call(this, address);\n }\n return this._formatToParts(address, options || {});\n };\n _proto.validate = function validate(address, options) {\n if (options === void 0) {\n options = {};\n }\n options.addressType = options.addressType || ADDRESS_TYPES_FOR_PO_BOX_RURAL_ROUTE_VALIDATION.SHIPPING;\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertAddress$1(address, this.type, this.addressRegion);\n assertType(options, \"options\", [\"plain object\"]);\n assertType(options.addressType, \"options.addressType\", [\"string\"]);\n assertRange(options.addressType, Object.values(ADDRESS_TYPES_FOR_PO_BOX_RURAL_ROUTE_VALIDATION), \"Invalid options.addressType {{value}}, expected one of {{addressTypes}}\", {\n value: options.addressType,\n addressTypes: Object.values(ADDRESS_TYPES_FOR_PO_BOX_RURAL_ROUTE_VALIDATION)\n });\n }\n return this._validate(address, Object.assign({}, options));\n };\n return AddressFormat;\n}();\nvar AddressConverter = /*#__PURE__*/function () {\n function AddressConverter(options) {\n options.from = options.from || options.fromType;\n options.to = options.to || options.toType;\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(options, \"options\", [\"undefined\", \"plain object\"]);\n assertType(options.from, \"options.from\", [\"string\"]);\n assertType(options.to, \"options.to\", [\"string\"]);\n var validFromTypes = Object.values(ADDRESS_TRANSFORM_TYPES);\n var validToTypes = [ADDRESS_TRANSFORM_TYPES.COARSE, ADDRESS_TRANSFORM_TYPES.PORTABLE];\n assertRange(options.from, validFromTypes, \"Invalid options.from {{value}}, expected one of {{validFromTypes}}.\", {\n value: options.from,\n validFromTypes: validFromTypes\n });\n assertRange(options.to, validToTypes, \"Invalid options.to {{value}}, expected one of {{validToTypes}}.\", {\n value: options.to,\n validToTypes: validToTypes\n });\n }\n var cldr = new Cldr(\"und\");\n this.options = options;\n\n // Not taking too much care about using minimal data here with the\n // assumption this is used in server-side.\n cldr.on(\"get\", validateRequiredCldr);\n var addressData = null;\n try {\n addressData = cldr.get(\"supplemental/portableAddressData\");\n } finally {\n cldr.off(\"get\", validateRequiredCldr);\n }\n this._transform = Object.assign.apply(Object, Object.keys(addressData).map(function (addressRegion) {\n var _addressMetadata, _ref26;\n var addressMetadata = (_addressMetadata = {}, _addressMetadata[addressRegion] = addressData[addressRegion], _addressMetadata.addressRegion = addressRegion, _addressMetadata);\n return _ref26 = {}, _ref26[addressRegion] = function (address) {\n return transformAddress$1(address, options, addressMetadata);\n }, _ref26;\n }));\n }\n var _proto2 = AddressConverter.prototype;\n _proto2.transform = function transform(address) {\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(address, \"address\", [\"plain object\"]);\n }\n address = address || {};\n var originalCountryCode = address.countryCode || address.country;\n address.countryCode = getResolvedRegion(originalCountryCode);\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(address.countryCode, \"address.countryCode\", [\"string\"]);\n }\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n var availableRegions = Object.keys(this._transform);\n assertRange(address.countryCode, availableRegions, \"Invalid address.countryCode value {{value}}, expected one of {{availableRegions}}}\", {\n value: address.countryCode,\n availableRegions: availableRegions\n });\n } else {\n // TODO standardize error handling in production\n if (!this._transform[address.countryCode]) {\n console.error(new Error(\"Invalid address.countryCode range\").stack);\n return address;\n }\n }\n var transformedAddress = this._transform[address.countryCode](address);\n if (transformedAddress.countryCode) {\n transformedAddress.countryCode = originalCountryCode;\n }\n return transformedAddress;\n };\n return AddressConverter;\n}();\nvar AddressUtility = {\n /**\n * Utility function to convert keys of an object that are in snake case to camel case.\n * NOTE: This function doesn't update the values of an object.\n * @param {Object} address an object whose keys needs to be converted to camel case\n * @returns {Object} an object whose keys have been converted to camel case\n */\n camelizeAddress: function camelizeAddress(address) {\n return camelizeObject(address);\n },\n /**\n * Utility function to convert keys of an object from camel case to snake case\n * NOTE: This function doesn't update the values of an object.\n * @param {Object} address an object whose keys needs to be converted to snake case\n * @returns {Object} an object whose keys have been converted to snake case\n */\n snakeCaseAddress: function snakeCaseAddress(address) {\n return snakeCaseObject(address, {\n line1: \"line1\",\n line2: \"line2\"\n });\n }\n};\nif (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertAddress$1 = function assertAddress$1(address, type, addressRegion) {\n assertType(address, \"address\", [\"plain object\"]);\n if (address.country_code || address.address_line_1) {\n throw new Error(\"DEPRECATED WARNING: AddressFormat API has changed for consistency with other formatters. Now, we expect address obejct using camelCase keys. Sorry for the inconvenience, but we decided to do this change sooner than later since WorldReady is all about consistency.\\nFix your address object by using:\\n\" + JSON.stringify(camelizeObject(address), null, 2) + \"\\nWe also provide a utility you can use to transform your models:\\nAddressUtility.camelizeAddress(address);\");\n }\n elements[type].forEach(function (element) {\n assertType(objectGet(address, element), \"address.\" + element, [\"string\", \"undefined\"]);\n });\n address.countryCode = getResolvedRegion(address.countryCode);\n if (address.countryCode) {\n assertRange(address.countryCode, [addressRegion], \"You created this AddressFormat using {{addressRegionObj}}, but passed an address with {{countryCodeObj}}. Please use `new AddressFormat({{expectedAddressRegionObj}})` instead.\", {\n addressRegion: addressRegion,\n addressRegionObj: {\n addressRegion: addressRegion\n },\n countryCode: address.countryCode,\n countryCodeObj: {\n countryCode: address.countryCode\n },\n expectedAddressRegionObj: {\n addressRegion: address.countryCode\n }\n });\n }\n };\n addressFormatToPartsAsserts = function addressFormatToPartsAsserts(address) {\n assertAddress$1(address, this.type, this.addressRegion);\n var currUsage = \"new AddressFormat(worldReady, \" + JSON.stringify(this._debug_options) + \")\";\n if (this.type === ADDRESS_TYPES.PORTABLE) {\n assert(!address.line1, \"You are trying to format a coarse address {{address}} using `{currUsage}`. Please, use `{newUsage}` instead\", {\n address: address,\n currUsage: currUsage,\n newUsage: \"new AddressFormat(worldReady, \" + JSON.stringify(Object.assign({}, this._debug_options, {\n type: ADDRESS_TYPES.COARSE\n })) + \")\"\n });\n }\n if (this.type === ADDRESS_TYPES.COARSE) {\n assert(!address.addressLine1, \"You are trying to format a portable address {{address}} using `{currUsage}`. Please, use `{newUsage}` instead\", {\n address: address,\n currUsage: currUsage,\n newUsage: \"new AddressFormat(worldReady, \" + JSON.stringify(Object.assign({}, this._debug_options, {\n type: ADDRESS_TYPES.PORTABLE\n })) + \")\"\n });\n }\n var addressRegion = this.type === ADDRESS_TYPES.PORTABLE ? address.countryCode : address.countryCode || address.country;\n if (addressRegion) {\n assert(addressRegion === this.addressRegion, \"You are trying to format a {{addressRegion}} address (see {{value}}) using `{currUsage}`. Please, use `{newUsage}` instead\", {\n addressRegion: addressRegion,\n value: {\n countryCode: addressRegion\n },\n currUsage: currUsage,\n newUsage: \"new AddressFormat(worldReady, \" + JSON.stringify(Object.assign({}, this._debug_options, {\n addressRegion: addressRegion\n })) + \")\"\n });\n }\n };\n}\n\nexport { AddressConverter, AddressFormat, AddressUtility };\n","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","const perf =\n typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date\n\nconst hasAbortController = typeof AbortController === 'function'\n\n// minimal backwards-compatibility polyfill\n// this doesn't have nearly all the checks and whatnot that\n// actual AbortController/Signal has, but it's enough for\n// our purposes, and if used properly, behaves the same.\nconst AC = hasAbortController\n ? AbortController\n : class AbortController {\n constructor() {\n this.signal = new AS()\n }\n abort(reason = new Error('This operation was aborted')) {\n this.signal.reason = this.signal.reason || reason\n this.signal.aborted = true\n this.signal.dispatchEvent({\n type: 'abort',\n target: this.signal,\n })\n }\n }\n\nconst hasAbortSignal = typeof AbortSignal === 'function'\n// Some polyfills put this on the AC class, not global\nconst hasACAbortSignal = typeof AC.AbortSignal === 'function'\nconst AS = hasAbortSignal\n ? AbortSignal\n : hasACAbortSignal\n ? AC.AbortController\n : class AbortSignal {\n constructor() {\n this.reason = undefined\n this.aborted = false\n this._listeners = []\n }\n dispatchEvent(e) {\n if (e.type === 'abort') {\n this.aborted = true\n this.onabort(e)\n this._listeners.forEach(f => f(e), this)\n }\n }\n onabort() {}\n addEventListener(ev, fn) {\n if (ev === 'abort') {\n this._listeners.push(fn)\n }\n }\n removeEventListener(ev, fn) {\n if (ev === 'abort') {\n this._listeners = this._listeners.filter(f => f !== fn)\n }\n }\n }\n\nconst warned = new Set()\nconst deprecatedOption = (opt, instead) => {\n const code = `LRU_CACHE_OPTION_${opt}`\n if (shouldWarn(code)) {\n warn(code, `${opt} option`, `options.${instead}`, LRUCache)\n }\n}\nconst deprecatedMethod = (method, instead) => {\n const code = `LRU_CACHE_METHOD_${method}`\n if (shouldWarn(code)) {\n const { prototype } = LRUCache\n const { get } = Object.getOwnPropertyDescriptor(prototype, method)\n warn(code, `${method} method`, `cache.${instead}()`, get)\n }\n}\nconst deprecatedProperty = (field, instead) => {\n const code = `LRU_CACHE_PROPERTY_${field}`\n if (shouldWarn(code)) {\n const { prototype } = LRUCache\n const { get } = Object.getOwnPropertyDescriptor(prototype, field)\n warn(code, `${field} property`, `cache.${instead}`, get)\n }\n}\n\nconst emitWarning = (...a) => {\n typeof process === 'object' &&\n process &&\n typeof process.emitWarning === 'function'\n ? process.emitWarning(...a)\n : console.error(...a)\n}\n\nconst shouldWarn = code => !warned.has(code)\n\nconst warn = (code, what, instead, fn) => {\n warned.add(code)\n const msg = `The ${what} is deprecated. Please use ${instead} instead.`\n emitWarning(msg, 'DeprecationWarning', code, fn)\n}\n\nconst isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n)\n\n/* istanbul ignore next - This is a little bit ridiculous, tbh.\n * The maximum array length is 2^32-1 or thereabouts on most JS impls.\n * And well before that point, you're caching the entire world, I mean,\n * that's ~32GB of just integers for the next/prev links, plus whatever\n * else to hold that many keys and values. Just filling the memory with\n * zeroes at init time is brutal when you get that big.\n * But why not be complete?\n * Maybe in the future, these limits will have expanded. */\nconst getUintArray = max =>\n !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null\n\nclass ZeroArray extends Array {\n constructor(size) {\n super(size)\n this.fill(0)\n }\n}\n\nclass Stack {\n constructor(max) {\n if (max === 0) {\n return []\n }\n const UintArray = getUintArray(max)\n this.heap = new UintArray(max)\n this.length = 0\n }\n push(n) {\n this.heap[this.length++] = n\n }\n pop() {\n return this.heap[--this.length]\n }\n}\n\nclass LRUCache {\n constructor(options = {}) {\n const {\n max = 0,\n ttl,\n ttlResolution = 1,\n ttlAutopurge,\n updateAgeOnGet,\n updateAgeOnHas,\n allowStale,\n dispose,\n disposeAfter,\n noDisposeOnSet,\n noUpdateTTL,\n maxSize = 0,\n maxEntrySize = 0,\n sizeCalculation,\n fetchMethod,\n fetchContext,\n noDeleteOnFetchRejection,\n noDeleteOnStaleGet,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n } = options\n\n // deprecated options, don't trigger a warning for getting them if\n // the thing being passed in is another LRUCache we're copying.\n const { length, maxAge, stale } =\n options instanceof LRUCache ? {} : options\n\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer')\n }\n\n const UintArray = max ? getUintArray(max) : Array\n if (!UintArray) {\n throw new Error('invalid max value: ' + max)\n }\n\n this.max = max\n this.maxSize = maxSize\n this.maxEntrySize = maxEntrySize || this.maxSize\n this.sizeCalculation = sizeCalculation || length\n if (this.sizeCalculation) {\n if (!this.maxSize && !this.maxEntrySize) {\n throw new TypeError(\n 'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n )\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function')\n }\n }\n\n this.fetchMethod = fetchMethod || null\n if (this.fetchMethod && typeof this.fetchMethod !== 'function') {\n throw new TypeError(\n 'fetchMethod must be a function if specified'\n )\n }\n\n this.fetchContext = fetchContext\n if (!this.fetchMethod && fetchContext !== undefined) {\n throw new TypeError(\n 'cannot set fetchContext without fetchMethod'\n )\n }\n\n this.keyMap = new Map()\n this.keyList = new Array(max).fill(null)\n this.valList = new Array(max).fill(null)\n this.next = new UintArray(max)\n this.prev = new UintArray(max)\n this.head = 0\n this.tail = 0\n this.free = new Stack(max)\n this.initialFill = 1\n this.size = 0\n\n if (typeof dispose === 'function') {\n this.dispose = dispose\n }\n if (typeof disposeAfter === 'function') {\n this.disposeAfter = disposeAfter\n this.disposed = []\n } else {\n this.disposeAfter = null\n this.disposed = null\n }\n this.noDisposeOnSet = !!noDisposeOnSet\n this.noUpdateTTL = !!noUpdateTTL\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n this.ignoreFetchAbort = !!ignoreFetchAbort\n\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.maxSize !== 0) {\n if (!isPosInt(this.maxSize)) {\n throw new TypeError(\n 'maxSize must be a positive integer if specified'\n )\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError(\n 'maxEntrySize must be a positive integer if specified'\n )\n }\n this.initializeSizeTracking()\n }\n\n this.allowStale = !!allowStale || !!stale\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n this.updateAgeOnGet = !!updateAgeOnGet\n this.updateAgeOnHas = !!updateAgeOnHas\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1\n this.ttlAutopurge = !!ttlAutopurge\n this.ttl = ttl || maxAge || 0\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError(\n 'ttl must be a positive integer if specified'\n )\n }\n this.initializeTTLTracking()\n }\n\n // do not allow completely unbounded caches\n if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) {\n throw new TypeError(\n 'At least one of max, maxSize, or ttl is required'\n )\n }\n if (!this.ttlAutopurge && !this.max && !this.maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED'\n if (shouldWarn(code)) {\n warned.add(code)\n const msg =\n 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.'\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n }\n }\n\n if (stale) {\n deprecatedOption('stale', 'allowStale')\n }\n if (maxAge) {\n deprecatedOption('maxAge', 'ttl')\n }\n if (length) {\n deprecatedOption('length', 'sizeCalculation')\n }\n }\n\n getRemainingTTL(key) {\n return this.has(key, { updateAgeOnHas: false }) ? Infinity : 0\n }\n\n initializeTTLTracking() {\n this.ttls = new ZeroArray(this.max)\n this.starts = new ZeroArray(this.max)\n\n this.setItemTTL = (index, ttl, start = perf.now()) => {\n this.starts[index] = ttl !== 0 ? start : 0\n this.ttls[index] = ttl\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.isStale(index)) {\n this.delete(this.keyList[index])\n }\n }, ttl + 1)\n /* istanbul ignore else - unref() not supported on all platforms */\n if (t.unref) {\n t.unref()\n }\n }\n }\n\n this.updateItemAge = index => {\n this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0\n }\n\n this.statusTTL = (status, index) => {\n if (status) {\n status.ttl = this.ttls[index]\n status.start = this.starts[index]\n status.now = cachedNow || getNow()\n status.remainingTTL = status.now + status.ttl - status.start\n }\n }\n\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0\n const getNow = () => {\n const n = perf.now()\n if (this.ttlResolution > 0) {\n cachedNow = n\n const t = setTimeout(\n () => (cachedNow = 0),\n this.ttlResolution\n )\n /* istanbul ignore else - not available on all platforms */\n if (t.unref) {\n t.unref()\n }\n }\n return n\n }\n\n this.getRemainingTTL = key => {\n const index = this.keyMap.get(key)\n if (index === undefined) {\n return 0\n }\n return this.ttls[index] === 0 || this.starts[index] === 0\n ? Infinity\n : this.starts[index] +\n this.ttls[index] -\n (cachedNow || getNow())\n }\n\n this.isStale = index => {\n return (\n this.ttls[index] !== 0 &&\n this.starts[index] !== 0 &&\n (cachedNow || getNow()) - this.starts[index] >\n this.ttls[index]\n )\n }\n }\n updateItemAge(_index) {}\n statusTTL(_status, _index) {}\n setItemTTL(_index, _ttl, _start) {}\n isStale(_index) {\n return false\n }\n\n initializeSizeTracking() {\n this.calculatedSize = 0\n this.sizes = new ZeroArray(this.max)\n this.removeItemSize = index => {\n this.calculatedSize -= this.sizes[index]\n this.sizes[index] = 0\n }\n this.requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.isBackgroundFetch(v)) {\n return 0\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function')\n }\n size = sizeCalculation(v, k)\n if (!isPosInt(size)) {\n throw new TypeError(\n 'sizeCalculation return invalid (expect positive integer)'\n )\n }\n } else {\n throw new TypeError(\n 'invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation or size ' +\n 'must be set.'\n )\n }\n }\n return size\n }\n this.addItemSize = (index, size, status) => {\n this.sizes[index] = size\n if (this.maxSize) {\n const maxSize = this.maxSize - this.sizes[index]\n while (this.calculatedSize > maxSize) {\n this.evict(true)\n }\n }\n this.calculatedSize += this.sizes[index]\n if (status) {\n status.entrySize = size\n status.totalCalculatedSize = this.calculatedSize\n }\n }\n }\n removeItemSize(_index) {}\n addItemSize(_index, _size) {}\n requireSize(_k, _v, size, sizeCalculation) {\n if (size || sizeCalculation) {\n throw new TypeError(\n 'cannot set size without setting maxSize or maxEntrySize on cache'\n )\n }\n }\n\n *indexes({ allowStale = this.allowStale } = {}) {\n if (this.size) {\n for (let i = this.tail; true; ) {\n if (!this.isValidIndex(i)) {\n break\n }\n if (allowStale || !this.isStale(i)) {\n yield i\n }\n if (i === this.head) {\n break\n } else {\n i = this.prev[i]\n }\n }\n }\n }\n\n *rindexes({ allowStale = this.allowStale } = {}) {\n if (this.size) {\n for (let i = this.head; true; ) {\n if (!this.isValidIndex(i)) {\n break\n }\n if (allowStale || !this.isStale(i)) {\n yield i\n }\n if (i === this.tail) {\n break\n } else {\n i = this.next[i]\n }\n }\n }\n }\n\n isValidIndex(index) {\n return (\n index !== undefined &&\n this.keyMap.get(this.keyList[index]) === index\n )\n }\n\n *entries() {\n for (const i of this.indexes()) {\n if (\n this.valList[i] !== undefined &&\n this.keyList[i] !== undefined &&\n !this.isBackgroundFetch(this.valList[i])\n ) {\n yield [this.keyList[i], this.valList[i]]\n }\n }\n }\n *rentries() {\n for (const i of this.rindexes()) {\n if (\n this.valList[i] !== undefined &&\n this.keyList[i] !== undefined &&\n !this.isBackgroundFetch(this.valList[i])\n ) {\n yield [this.keyList[i], this.valList[i]]\n }\n }\n }\n\n *keys() {\n for (const i of this.indexes()) {\n if (\n this.keyList[i] !== undefined &&\n !this.isBackgroundFetch(this.valList[i])\n ) {\n yield this.keyList[i]\n }\n }\n }\n *rkeys() {\n for (const i of this.rindexes()) {\n if (\n this.keyList[i] !== undefined &&\n !this.isBackgroundFetch(this.valList[i])\n ) {\n yield this.keyList[i]\n }\n }\n }\n\n *values() {\n for (const i of this.indexes()) {\n if (\n this.valList[i] !== undefined &&\n !this.isBackgroundFetch(this.valList[i])\n ) {\n yield this.valList[i]\n }\n }\n }\n *rvalues() {\n for (const i of this.rindexes()) {\n if (\n this.valList[i] !== undefined &&\n !this.isBackgroundFetch(this.valList[i])\n ) {\n yield this.valList[i]\n }\n }\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n find(fn, getOptions) {\n for (const i of this.indexes()) {\n const v = this.valList[i]\n const value = this.isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n if (fn(value, this.keyList[i], this)) {\n return this.get(this.keyList[i], getOptions)\n }\n }\n }\n\n forEach(fn, thisp = this) {\n for (const i of this.indexes()) {\n const v = this.valList[i]\n const value = this.isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.keyList[i], this)\n }\n }\n\n rforEach(fn, thisp = this) {\n for (const i of this.rindexes()) {\n const v = this.valList[i]\n const value = this.isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.keyList[i], this)\n }\n }\n\n get prune() {\n deprecatedMethod('prune', 'purgeStale')\n return this.purgeStale\n }\n\n purgeStale() {\n let deleted = false\n for (const i of this.rindexes({ allowStale: true })) {\n if (this.isStale(i)) {\n this.delete(this.keyList[i])\n deleted = true\n }\n }\n return deleted\n }\n\n dump() {\n const arr = []\n for (const i of this.indexes({ allowStale: true })) {\n const key = this.keyList[i]\n const v = this.valList[i]\n const value = this.isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n const entry = { value }\n if (this.ttls) {\n entry.ttl = this.ttls[i]\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.starts[i]\n entry.start = Math.floor(Date.now() - age)\n }\n if (this.sizes) {\n entry.size = this.sizes[i]\n }\n arr.unshift([key, entry])\n }\n return arr\n }\n\n load(arr) {\n this.clear()\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset.\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start\n entry.start = perf.now() - age\n }\n this.set(key, entry.value, entry)\n }\n }\n\n dispose(_v, _k, _reason) {}\n\n set(\n k,\n v,\n {\n ttl = this.ttl,\n start,\n noDisposeOnSet = this.noDisposeOnSet,\n size = 0,\n sizeCalculation = this.sizeCalculation,\n noUpdateTTL = this.noUpdateTTL,\n status,\n } = {}\n ) {\n size = this.requireSize(k, v, size, sizeCalculation)\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss'\n status.maxEntrySizeExceeded = true\n }\n // have to delete, in case a background fetch is there already.\n // in non-async cases, this is a no-op\n this.delete(k)\n return this\n }\n let index = this.size === 0 ? undefined : this.keyMap.get(k)\n if (index === undefined) {\n // addition\n index = this.newIndex()\n this.keyList[index] = k\n this.valList[index] = v\n this.keyMap.set(k, index)\n this.next[this.tail] = index\n this.prev[index] = this.tail\n this.tail = index\n this.size++\n this.addItemSize(index, size, status)\n if (status) {\n status.set = 'add'\n }\n noUpdateTTL = false\n } else {\n // update\n this.moveToTail(index)\n const oldVal = this.valList[index]\n if (v !== oldVal) {\n if (this.isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'))\n } else {\n if (!noDisposeOnSet) {\n this.dispose(oldVal, k, 'set')\n if (this.disposeAfter) {\n this.disposed.push([oldVal, k, 'set'])\n }\n }\n }\n this.removeItemSize(index)\n this.valList[index] = v\n this.addItemSize(index, size, status)\n if (status) {\n status.set = 'replace'\n const oldValue =\n oldVal && this.isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal\n if (oldValue !== undefined) status.oldValue = oldValue\n }\n } else if (status) {\n status.set = 'update'\n }\n }\n if (ttl !== 0 && this.ttl === 0 && !this.ttls) {\n this.initializeTTLTracking()\n }\n if (!noUpdateTTL) {\n this.setItemTTL(index, ttl, start)\n }\n this.statusTTL(status, index)\n if (this.disposeAfter) {\n while (this.disposed.length) {\n this.disposeAfter(...this.disposed.shift())\n }\n }\n return this\n }\n\n newIndex() {\n if (this.size === 0) {\n return this.tail\n }\n if (this.size === this.max && this.max !== 0) {\n return this.evict(false)\n }\n if (this.free.length !== 0) {\n return this.free.pop()\n }\n // initial fill, just keep writing down the list\n return this.initialFill++\n }\n\n pop() {\n if (this.size) {\n const val = this.valList[this.head]\n this.evict(true)\n return val\n }\n }\n\n evict(free) {\n const head = this.head\n const k = this.keyList[head]\n const v = this.valList[head]\n if (this.isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'))\n } else {\n this.dispose(v, k, 'evict')\n if (this.disposeAfter) {\n this.disposed.push([v, k, 'evict'])\n }\n }\n this.removeItemSize(head)\n // if we aren't about to use the index, then null these out\n if (free) {\n this.keyList[head] = null\n this.valList[head] = null\n this.free.push(head)\n }\n this.head = this.next[head]\n this.keyMap.delete(k)\n this.size--\n return head\n }\n\n has(k, { updateAgeOnHas = this.updateAgeOnHas, status } = {}) {\n const index = this.keyMap.get(k)\n if (index !== undefined) {\n if (!this.isStale(index)) {\n if (updateAgeOnHas) {\n this.updateItemAge(index)\n }\n if (status) status.has = 'hit'\n this.statusTTL(status, index)\n return true\n } else if (status) {\n status.has = 'stale'\n this.statusTTL(status, index)\n }\n } else if (status) {\n status.has = 'miss'\n }\n return false\n }\n\n // like get(), but without any LRU updating or TTL expiration\n peek(k, { allowStale = this.allowStale } = {}) {\n const index = this.keyMap.get(k)\n if (index !== undefined && (allowStale || !this.isStale(index))) {\n const v = this.valList[index]\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.isBackgroundFetch(v) ? v.__staleWhileFetching : v\n }\n }\n\n backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.valList[index]\n if (this.isBackgroundFetch(v)) {\n return v\n }\n const ac = new AC()\n if (options.signal) {\n options.signal.addEventListener('abort', () =>\n ac.abort(options.signal.reason)\n )\n }\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n }\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true\n options.status.fetchError = ac.signal.reason\n if (ignoreAbort) options.status.fetchAbortIgnored = true\n } else {\n options.status.fetchResolved = true\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason)\n }\n // either we didn't abort, and are still here, or we did, and ignored\n if (this.valList[index] === p) {\n if (v === undefined) {\n if (p.__staleWhileFetching) {\n this.valList[index] = p.__staleWhileFetching\n } else {\n this.delete(k)\n }\n } else {\n if (options.status) options.status.fetchUpdated = true\n this.set(k, v, fetchOpts.options)\n }\n }\n return v\n }\n const eb = er => {\n if (options.status) {\n options.status.fetchRejected = true\n options.status.fetchError = er\n }\n return fetchFail(er)\n }\n const fetchFail = er => {\n const { aborted } = ac.signal\n const allowStaleAborted =\n aborted && options.allowStaleOnFetchAbort\n const allowStale =\n allowStaleAborted || options.allowStaleOnFetchRejection\n const noDelete = allowStale || options.noDeleteOnFetchRejection\n if (this.valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || p.__staleWhileFetching === undefined\n if (del) {\n this.delete(k)\n } else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.valList[index] = p.__staleWhileFetching\n }\n }\n if (allowStale) {\n if (options.status && p.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true\n }\n return p.__staleWhileFetching\n } else if (p.__returned === p) {\n throw er\n }\n }\n const pcall = (res, rej) => {\n this.fetchMethod(k, v, fetchOpts).then(v => res(v), rej)\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (\n !options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort\n ) {\n res()\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true)\n }\n }\n })\n }\n if (options.status) options.status.fetchDispatched = true\n const p = new Promise(pcall).then(cb, eb)\n p.__abortController = ac\n p.__staleWhileFetching = v\n p.__returned = null\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, p, { ...fetchOpts.options, status: undefined })\n index = this.keyMap.get(k)\n } else {\n this.valList[index] = p\n }\n return p\n }\n\n isBackgroundFetch(p) {\n return (\n p &&\n typeof p === 'object' &&\n typeof p.then === 'function' &&\n Object.prototype.hasOwnProperty.call(\n p,\n '__staleWhileFetching'\n ) &&\n Object.prototype.hasOwnProperty.call(p, '__returned') &&\n (p.__returned === p || p.__returned === null)\n )\n }\n\n // this takes the union of get() and set() opts, because it does both\n async fetch(\n k,\n {\n // get options\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n // set options\n ttl = this.ttl,\n noDisposeOnSet = this.noDisposeOnSet,\n size = 0,\n sizeCalculation = this.sizeCalculation,\n noUpdateTTL = this.noUpdateTTL,\n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n ignoreFetchAbort = this.ignoreFetchAbort,\n allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n fetchContext = this.fetchContext,\n forceRefresh = false,\n status,\n signal,\n } = {}\n ) {\n if (!this.fetchMethod) {\n if (status) status.fetch = 'get'\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n })\n }\n\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n }\n\n let index = this.keyMap.get(k)\n if (index === undefined) {\n if (status) status.fetch = 'miss'\n const p = this.backgroundFetch(k, index, options, fetchContext)\n return (p.__returned = p)\n } else {\n // in cache, maybe already fetching\n const v = this.valList[index]\n if (this.isBackgroundFetch(v)) {\n const stale =\n allowStale && v.__staleWhileFetching !== undefined\n if (status) {\n status.fetch = 'inflight'\n if (stale) status.returnedStale = true\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v)\n }\n\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.isStale(index)\n if (!forceRefresh && !isStale) {\n if (status) status.fetch = 'hit'\n this.moveToTail(index)\n if (updateAgeOnGet) {\n this.updateItemAge(index)\n }\n this.statusTTL(status, index)\n return v\n }\n\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.backgroundFetch(k, index, options, fetchContext)\n const hasStale = p.__staleWhileFetching !== undefined\n const staleVal = hasStale && allowStale\n if (status) {\n status.fetch = hasStale && isStale ? 'stale' : 'refresh'\n if (staleVal && isStale) status.returnedStale = true\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n }\n }\n\n get(\n k,\n {\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n status,\n } = {}\n ) {\n const index = this.keyMap.get(k)\n if (index !== undefined) {\n const value = this.valList[index]\n const fetching = this.isBackgroundFetch(value)\n this.statusTTL(status, index)\n if (this.isStale(index)) {\n if (status) status.get = 'stale'\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.delete(k)\n }\n if (status) status.returnedStale = allowStale\n return allowStale ? value : undefined\n } else {\n if (status) {\n status.returnedStale =\n allowStale && value.__staleWhileFetching !== undefined\n }\n return allowStale ? value.__staleWhileFetching : undefined\n }\n } else {\n if (status) status.get = 'hit'\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching\n }\n this.moveToTail(index)\n if (updateAgeOnGet) {\n this.updateItemAge(index)\n }\n return value\n }\n } else if (status) {\n status.get = 'miss'\n }\n }\n\n connect(p, n) {\n this.prev[n] = p\n this.next[p] = n\n }\n\n moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.tail) {\n if (index === this.head) {\n this.head = this.next[index]\n } else {\n this.connect(this.prev[index], this.next[index])\n }\n this.connect(this.tail, index)\n this.tail = index\n }\n }\n\n get del() {\n deprecatedMethod('del', 'delete')\n return this.delete\n }\n\n delete(k) {\n let deleted = false\n if (this.size !== 0) {\n const index = this.keyMap.get(k)\n if (index !== undefined) {\n deleted = true\n if (this.size === 1) {\n this.clear()\n } else {\n this.removeItemSize(index)\n const v = this.valList[index]\n if (this.isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else {\n this.dispose(v, k, 'delete')\n if (this.disposeAfter) {\n this.disposed.push([v, k, 'delete'])\n }\n }\n this.keyMap.delete(k)\n this.keyList[index] = null\n this.valList[index] = null\n if (index === this.tail) {\n this.tail = this.prev[index]\n } else if (index === this.head) {\n this.head = this.next[index]\n } else {\n this.next[this.prev[index]] = this.next[index]\n this.prev[this.next[index]] = this.prev[index]\n }\n this.size--\n this.free.push(index)\n }\n }\n }\n if (this.disposed) {\n while (this.disposed.length) {\n this.disposeAfter(...this.disposed.shift())\n }\n }\n return deleted\n }\n\n clear() {\n for (const index of this.rindexes({ allowStale: true })) {\n const v = this.valList[index]\n if (this.isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else {\n const k = this.keyList[index]\n this.dispose(v, k, 'delete')\n if (this.disposeAfter) {\n this.disposed.push([v, k, 'delete'])\n }\n }\n }\n\n this.keyMap.clear()\n this.valList.fill(null)\n this.keyList.fill(null)\n if (this.ttls) {\n this.ttls.fill(0)\n this.starts.fill(0)\n }\n if (this.sizes) {\n this.sizes.fill(0)\n }\n this.head = 0\n this.tail = 0\n this.initialFill = 1\n this.free.length = 0\n this.calculatedSize = 0\n this.size = 0\n if (this.disposed) {\n while (this.disposed.length) {\n this.disposeAfter(...this.disposed.shift())\n }\n }\n }\n\n get reset() {\n deprecatedMethod('reset', 'clear')\n return this.clear\n }\n\n get length() {\n deprecatedProperty('length', 'size')\n return this.size\n }\n\n static get AbortController() {\n return AC\n }\n static get AbortSignal() {\n return AS\n }\n}\n\nexport default LRUCache\n","import 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.split';\nimport { isPlainObject } from 'is-plain-object';\nimport { assert, assertType } from 'yaassertion';\nimport LRU from 'lru-cache';\n\nvar Globalize = require('globalize/dist/globalize');\n\n/**\n * Given a locale, it will return certain old locales to new form\n * @param {locale} locale to replace\n * @return {new_locale}\n */\nfunction normalizeLocale(locale) {\n // prettier-ignore\n return locale.replace(/\\bno\\b/, \"nb\").replace(/\\btl\\b/, \"fil\");\n}\nvar countryAliasMapping = {\n C2: \"CN\",\n UK: \"GB\"\n};\nfunction getResolvedRegion(region) {\n return countryAliasMapping[region] || region;\n}\nvar ENVIRONMENT = {\n PRODUCTION: \"production\"\n};\n\n/**\n * max: maximum number of keys that the cache can have\n * ttl: time to live in milliseconds (currently it's set to 10 minutes)\n */\nvar DEFAULT_CACHE_CONFIG = {\n max: 400,\n ttl: 10 * 60 * 1000\n};\n\n/**\n * Wrapper for LRU cache that can be used across worldready sdk.\n */\nvar Cache = /*#__PURE__*/function () {\n function Cache(options) {\n if (options === void 0) {\n options = {};\n }\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(options, \"options\", [\"plain object\"]);\n }\n options = Object.assign({}, DEFAULT_CACHE_CONFIG, options);\n this.cache = new LRU(options);\n }\n\n /**\n * Utility function to set the value in cache.\n * @param {String} key string value that should be used as cache key\n * @param {Any} value value that needs to be stored in cache (can be string, number, object, etc.)\n * @param {Object} options an optional object that can have following props:\n * size\n * sizeCalculation\n * ttl\n * noDisposeOnSet\n * start\n * For more details, refer this link: https://github.com/isaacs/node-lru-cache#setkey-value--size-sizecalculation-ttl-nodisposeonset-start-\n * @returns {Any} value that's added to the cache\n */\n var _proto = Cache.prototype;\n _proto.set = function set(key, value, options) {\n if (options === void 0) {\n options = {};\n }\n return this.cache.set(key, value, options);\n }\n\n /**\n * Utility function to retrieve a value from cache.\n * @param {String} key string value that was used as key while entering the value in cache\n * @param {Object} options an optional object that can have following props:\n * updateAgeOnGet\n * allowStale\n * For more details, refer this link: https://github.com/isaacs/node-lru-cache#getkey--updateageonget-allowstale-----value\n * @returns {Any} value that's stored in cache for the corresponding key. It'll return undefined if key is not found.\n */;\n _proto.get = function get(key, options) {\n if (options === void 0) {\n options = {};\n }\n return this.cache.get(key, options);\n }\n\n /**\n * Utility function to check if value for a certain key is present in cache or not.\n * @param {*} key string value that could've been used as key while entering the value in cache\n * @param {*} options an optional object that can have following props:\n * updateAgeOnHas: if set to false, the recency of the key won't be updated\n * @returns {Boolean}\n */;\n _proto.has = function has(key, options) {\n if (options === void 0) {\n options = {};\n }\n return this.cache.has(key, options);\n }\n\n /**\n * Utility function to delete a key from cache.\n * @param {String} key string value that was used as key while entering the value in cache\n * @returns {Boolean} true if key was found, otherwise false\n */;\n _proto.delete = function _delete(key) {\n return this.cache.delete(key);\n }\n\n /**\n * Utility function to get total number of items present in cache.\n */;\n _proto.size = function size() {\n return this.cache.size;\n }\n\n /**\n * Helper function to clear contents of cache.\n */;\n _proto.clear = function clear() {\n return this.cache.clear();\n };\n return Cache;\n}();\nrequire(\"./globalize-overrides/relative-time\");\nrequire(\"./globalize-overrides/unit\");\nrequire(\"./globalize-overrides/date\");\n\n// Internationalization and localization data providers array:\nvar isWorldReadyLoadCalled;\nvar isWorldReadyInstance = function isWorldReadyInstance(object) {\n return object && object.globalize;\n};\nfunction _normalizeLocale(locale, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$langSubtag = _ref.langSubtag,\n langSubtag = _ref$langSubtag === void 0 ? true : _ref$langSubtag;\n if (locale.payPalLocaleCode) {\n // A payPalLocaleCode to existing limited locale support.\n var _locale$payPalLocaleC = locale.payPalLocaleCode,\n _locale = _locale$payPalLocaleC.locale,\n _country = _locale$payPalLocaleC.country;\n var _locale$split = _locale.split(/[-_]/),\n _localeLanguage = _locale$split[0];\n locale = _localeLanguage + \"-\" + _country;\n\n // A payPalLocaleCode to standard locale normalization: (when PayPal supports all locales anywhere)\n // const { locale: _locale } = locale.payPalLocaleCode;\n // const [_localeLanguage, _localeCountry] = _locale.split(/[-_]/);\n // if (_localeCountry === \"XC\") {\n // if (_localeLanguage === \"es\") {\n // // es_XC -> es-MX\n // locale = \"es-MX\";\n // } else {\n // // fr_XC -> fr\n // // zh_XC -> zh\n // locale = _localeLanguage;\n // }\n // } else {\n // locale = _locale;\n // }\n }\n if (process.env.NODE_ENV !== \"production\") {\n assert(typeof locale === \"string\", typeof locale === \"object\" ? \"Invalid locale {{locale}}. Did you mean {{didYouMean}}?\" : \"Invalid locale {{locale}}\", {\n locale: locale,\n didYouMean: {\n payPalLocaleCode: locale\n }\n });\n }\n locale = locale\n // Support both _ & - as locale separator.\n // Note: This must precede other replaces using `\\b`.\n .replace(/_/, \"-\")\n // If locale includes C2, replace it with CN-xbord\n .replace(/\\bC2\\b/, \"CN-xbord\");\n if (langSubtag) {\n locale = normalizeLocale(locale);\n }\n return locale;\n}\n\n/**\n * Region\n */\nvar Region = /*#__PURE__*/function () {\n function Region() {}\n Region.getRegionString = function getRegionString(worldReadyOrRegionOrString) {\n if (worldReadyOrRegionOrString && worldReadyOrRegionOrString.region) {\n return getResolvedRegion(worldReadyOrRegionOrString.region);\n }\n return getResolvedRegion(worldReadyOrRegionOrString);\n };\n return Region;\n}();\nif (process.env.NODE_ENV !== \"production\") {\n Region.assertType = function (parameterValue, parameterName) {\n assertType(parameterValue, parameterName, [\"string\", \"object\"]);\n };\n}\n\n/**\n * WorldReady\n */\nvar WorldReady = function WorldReady(locale) {\n var _main;\n if (process.env.NODE_ENV !== \"production\") {\n assert(isWorldReadyLoadCalled, \"Load WorldReady metadata first. Please read \" + \"https://github.paypal.com/pages/Globalization-R/worldready-js\" + \"/about-load-worldready-data.html\");\n }\n if (!(this instanceof WorldReady)) {\n return new WorldReady(locale);\n }\n\n // TODO assert locale\n locale = _normalizeLocale(locale);\n\n // Hack: set any locale as available locale.\n Globalize.load({\n main: (_main = {}, _main[locale] = {}, _main)\n });\n this.globalize = new Globalize(locale);\n var cldr = this.globalize.cldr;\n this.bundle = cldr.attributes.bundle;\n this.locale = cldr.locale;\n this.language = cldr.attributes.language;\n this.region = cldr.attributes.region;\n this.market = this.region;\n this.weekInfo = {\n minDays: cldr.get([\"supplemental/weekData/minDays\", this.region]) || cldr.get(\"supplemental/weekData/minDays/001\"),\n firstDay: cldr.get([\"supplemental/weekData/firstDay\", this.region]) || cldr.get(\"supplemental/weekData/firstDay/001\"),\n weekendStart: cldr.get([\"supplemental/weekData/weekendStart\", this.region]) || cldr.get(\"supplemental/weekData/weekendStart/001\"),\n weekendEnd: cldr.get([\"supplemental/weekData/weekendEnd\", this.region]) || cldr.get(\"supplemental/weekData/weekendEnd/001\")\n };\n this.metadata = cldr.get([\"metadata\"]) || {};\n};\n\n/**\n * async WorldReady.load()\n */\n{\n // Client-side\n WorldReady.load = function () {\n // TODO assert params\n isWorldReadyLoadCalled = true;\n for (var _len = arguments.length, providers = new Array(_len), _key = 0; _key < _len; _key++) {\n providers[_key] = arguments[_key];\n }\n providers.map(function (provider) {\n if (isPlainObject(provider)) {\n Globalize.load(provider);\n return;\n }\n throw new Error(\"Oops: Async provider not supported in browsers at the moment\");\n });\n };\n}\nWorldReady._Globalize = Globalize;\nWorldReady.cache = new Cache();\n\n/**\n * WorldReady features skeleton\n */\nif (process.env.NODE_ENV !== \"production\") {\n var loadError = function loadError(feature) {\n return function () {\n throw new Error(\"Missing feature, you may want to `import @paypalcorp/worldready-\" + feature + \"`\");\n };\n };\n WorldReady.prototype.Address = loadError(\"address\");\n WorldReady.prototype.RelativeTimeFormat = loadError(\"relative-time\");\n WorldReady.prototype.MessageFormat = loadError(\"message\");\n WorldReady.prototype.NumberFormat = loadError(\"number\");\n WorldReady.prototype.CurrencyFormat = loadError(\"currency\");\n}\nvar Griffin = WorldReady;\n\nexport { Griffin, Region, WorldReady, _normalizeLocale, isWorldReadyInstance };\n","'use strict';\n\n/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // Node, CommonJS\n module.exports = factory(require(\"cldrjs\"), require(\"globalize\"));\n } else {\n // Extend global\n factory(root.Cldr, root.Globalize);\n }\n})(undefined, function (Cldr, Globalize) {\n var createError = Globalize._createError,\n createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature,\n formatMessage = Globalize._formatMessage,\n isPlainObject = Globalize._isPlainObject,\n looseMatching = Globalize._looseMatching,\n numberNumberingSystemDigitsMap = Globalize._numberNumberingSystemDigitsMap,\n numberSymbol = Globalize._numberSymbol,\n partsJoin = Globalize._partsJoin,\n partsPush = Globalize._partsPush,\n regexpEscape = Globalize._regexpEscape,\n removeLiteralQuotes = Globalize._removeLiteralQuotes,\n runtimeBind = Globalize._runtimeBind,\n stringPad = Globalize._stringPad,\n validate = Globalize._validate,\n validateCldr = Globalize._validateCldr,\n validateDefaultLocale = Globalize._validateDefaultLocale,\n validateParameterPresence = Globalize._validateParameterPresence,\n validateParameterType = Globalize._validateParameterType,\n validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject,\n validateParameterTypeString = Globalize._validateParameterTypeString;\n var validateParameterTypeDate = function (value, name) {\n validateParameterType(value, name, value === undefined || value instanceof Date, \"Date\");\n };\n var createErrorInvalidParameterValue = function (name, value) {\n return createError(\"E_INVALID_PAR_VALUE\", \"Invalid `{name}` value ({value}).\", {\n name: name,\n value: value\n });\n };\n\n /**\n * Create a map between the skeleton fields and their positions, e.g.,\n * {\n * G: 0\n * y: 1\n * ...\n * }\n */\n var validateSkeletonFieldsPosMap = \"GyYuUrQqMLlwWEecdDFghHKkmsSAzZOvVXx\".split(\"\").reduce(function (memo, item, i) {\n memo[item] = i;\n return memo;\n }, {});\n\n /**\n * validateSkeleton( skeleton )\n *\n * skeleton: Assume `j` has already been converted into a localized hour field.\n */\n var validateSkeleton = function validateSkeleton(skeleton) {\n var last,\n // Using easier to read variable.\n fieldsPosMap = validateSkeletonFieldsPosMap;\n\n // \"The fields are from the Date Field Symbol Table in Date Format Patterns\"\n // Ref: http://www.unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n // I.e., check for invalid characters.\n skeleton.replace(/[^GyYuUrQqMLlwWEecdDFghHKkmsSAzZOvVXx]/, function (field) {\n throw createError(\"E_INVALID_OPTIONS\", \"Invalid field `{invalidField}` of skeleton `{value}`\", {\n invalidField: field,\n type: \"skeleton\",\n value: skeleton\n });\n });\n\n // \"The canonical order is from top to bottom in that table; that is, yM not My\".\n // http://www.unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n // I.e., check for invalid order.\n skeleton.split(\"\").every(function (field) {\n if (fieldsPosMap[field] < last) {\n throw createError(\"E_INVALID_OPTIONS\", \"Invalid order `{invalidField}` of skeleton `{value}`\", {\n invalidField: field,\n type: \"skeleton\",\n value: skeleton\n });\n }\n last = fieldsPosMap[field];\n return true;\n });\n };\n\n /**\n * Returns a new object created by using `object`'s values as keys, and the keys as values.\n */\n var objectInvert = function (object, fn) {\n fn = fn || function (object, key, value) {\n object[value] = key;\n return object;\n };\n return Object.keys(object).reduce(function (newObject, key) {\n return fn(newObject, key, object[key]);\n }, {});\n };\n\n // Invert key and values, e.g., {\"e\": \"eEc\"} ==> {\"e\": \"e\", \"E\": \"e\", \"c\": \"e\"}.\n var dateExpandPatternSimilarFieldsMap = objectInvert({\n e: \"eEc\",\n L: \"ML\"\n }, function (object, key, value) {\n value.split(\"\").forEach(function (field) {\n object[field] = key;\n });\n return object;\n });\n var dateExpandPatternNormalizePatternType = function (character) {\n return dateExpandPatternSimilarFieldsMap[character] || character;\n };\n var datePatternRe = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n var stringRepeat = function (str, count) {\n var i,\n result = \"\";\n for (i = 0; i < count; i++) {\n result = result + str;\n }\n return result;\n };\n function expandBestMatchFormat(skeletonWithoutFractionalSeconds, bestMatchFormat) {\n var i,\n j,\n bestMatchFormatParts,\n matchedType,\n matchedLength,\n requestedType,\n requestedLength,\n requestedSkeletonParts,\n // Using an easier to read variable.\n normalizePatternType = dateExpandPatternNormalizePatternType;\n requestedSkeletonParts = skeletonWithoutFractionalSeconds.match(datePatternRe);\n bestMatchFormatParts = bestMatchFormat.match(datePatternRe);\n for (i = 0; i < bestMatchFormatParts.length; i++) {\n matchedType = bestMatchFormatParts[i].charAt(0);\n matchedLength = bestMatchFormatParts[i].length;\n for (j = 0; j < requestedSkeletonParts.length; j++) {\n requestedType = requestedSkeletonParts[j].charAt(0);\n requestedLength = requestedSkeletonParts[j].length;\n if (normalizePatternType(matchedType) === normalizePatternType(requestedType) && matchedLength < requestedLength) {\n bestMatchFormatParts[i] = stringRepeat(matchedType, requestedLength);\n }\n }\n }\n return bestMatchFormatParts.join(\"\");\n }\n\n // See: http://www.unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons\n var dateExpandPatternAugmentFormat = function (requestedSkeleton, bestMatchFormat, decimalSeparator) {\n var countOfFractionalSeconds, fractionalSecondMatch, lastSecondIdx, skeletonWithoutFractionalSeconds;\n fractionalSecondMatch = requestedSkeleton.match(/S/g);\n countOfFractionalSeconds = fractionalSecondMatch ? fractionalSecondMatch.length : 0;\n skeletonWithoutFractionalSeconds = requestedSkeleton.replace(/S/g, \"\");\n bestMatchFormat = expandBestMatchFormat(skeletonWithoutFractionalSeconds, bestMatchFormat);\n lastSecondIdx = bestMatchFormat.lastIndexOf(\"s\");\n if (lastSecondIdx !== -1 && countOfFractionalSeconds !== 0) {\n bestMatchFormat = bestMatchFormat.slice(0, lastSecondIdx + 1) + decimalSeparator + stringRepeat(\"S\", countOfFractionalSeconds) + bestMatchFormat.slice(lastSecondIdx + 1);\n }\n return bestMatchFormat;\n };\n var dateExpandPatternCompareFormats = function (formatA, formatB) {\n var a,\n b,\n distance,\n lenA,\n lenB,\n typeA,\n typeB,\n i,\n j,\n // Using easier to read variables.\n normalizePatternType = dateExpandPatternNormalizePatternType;\n if (formatA === formatB) {\n return 0;\n }\n formatA = formatA.match(datePatternRe);\n formatB = formatB.match(datePatternRe);\n if (formatA.length !== formatB.length) {\n return -1;\n }\n distance = 1;\n for (i = 0; i < formatA.length; i++) {\n a = formatA[i].charAt(0);\n typeA = normalizePatternType(a);\n typeB = null;\n for (j = 0; j < formatB.length; j++) {\n b = formatB[j].charAt(0);\n typeB = normalizePatternType(b);\n if (typeA === typeB) {\n break;\n } else {\n typeB = null;\n }\n }\n if (typeB === null) {\n return -1;\n }\n lenA = formatA[i].length;\n lenB = formatB[j].length;\n distance = distance + Math.abs(lenA - lenB);\n\n // Most symbols have a small distance from each other, e.g., M ≅ L; E ≅ c; a ≅ b ≅ B;\n // H ≅ k ≅ h ≅ K; ...\n if (a !== b) {\n distance += 1;\n }\n\n // Numeric (l<3) and text fields (l>=3) are given a larger distance from each other.\n if (lenA < 3 && lenB >= 3 || lenA >= 3 && lenB < 3) {\n distance += 20;\n }\n }\n return distance;\n };\n var dateExpandPatternGetBestMatchPattern = function (cldr, askedSkeleton) {\n var availableFormats,\n decimalSeparator,\n pattern,\n ratedFormats,\n skeleton,\n path = \"dates/calendars/gregorian/dateTimeFormats/availableFormats\",\n // Using easier to read variables.\n augmentFormat = dateExpandPatternAugmentFormat,\n compareFormats = dateExpandPatternCompareFormats;\n pattern = cldr.main([path, askedSkeleton]);\n if (askedSkeleton && !pattern) {\n availableFormats = cldr.main([path]);\n ratedFormats = [];\n for (skeleton in availableFormats) {\n ratedFormats.push({\n skeleton: skeleton,\n pattern: availableFormats[skeleton],\n rate: compareFormats(askedSkeleton, skeleton)\n });\n }\n ratedFormats = ratedFormats.filter(function (format) {\n return format.rate > -1;\n }).sort(function (formatA, formatB) {\n return formatA.rate - formatB.rate;\n });\n if (ratedFormats.length) {\n decimalSeparator = numberSymbol(\"decimal\", cldr);\n pattern = augmentFormat(askedSkeleton, ratedFormats[0].pattern, decimalSeparator);\n }\n }\n return pattern;\n };\n\n /**\n * expandPattern( options, cldr )\n *\n * @options [Object] if String, it's considered a skeleton. Object accepts:\n * - skeleton: [String] lookup availableFormat;\n * - date: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - time: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - datetime: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - raw: [String] For more info see datetime/format.js.\n *\n * @cldr [Cldr instance].\n *\n * Return the corresponding pattern.\n * Eg for \"en\":\n * - \"GyMMMd\" returns \"MMM d, y G\";\n * - { skeleton: \"GyMMMd\" } returns \"MMM d, y G\";\n * - { date: \"full\" } returns \"EEEE, MMMM d, y\";\n * - { time: \"full\" } returns \"h:mm:ss a zzzz\";\n * - { datetime: \"full\" } returns \"EEEE, MMMM d, y 'at' h:mm:ss a zzzz\";\n * - { raw: \"dd/mm\" } returns \"dd/mm\";\n */\n var dateExpandPattern = function (options, cldr) {\n var dateSkeleton,\n result,\n skeleton,\n timeSkeleton,\n type,\n // Using easier to read variables.\n getBestMatchPattern = dateExpandPatternGetBestMatchPattern;\n function combineDateTime(type, datePattern, timePattern) {\n return formatMessage(cldr.main([\"dates/calendars/gregorian/dateTimeFormats\", type]), [timePattern, datePattern]);\n }\n switch (true) {\n case \"skeleton\" in options:\n skeleton = options.skeleton;\n\n // Preferred hour (j).\n skeleton = skeleton.replace(/j/g, function () {\n return cldr.supplemental.timeData.preferred();\n });\n validateSkeleton(skeleton);\n\n // Try direct map (note that getBestMatchPattern handles it).\n // ... or, try to \"best match\" the whole skeleton.\n result = getBestMatchPattern(cldr, skeleton);\n if (result) {\n break;\n }\n\n // ... or, try to \"best match\" the date and time parts individually.\n timeSkeleton = skeleton.split(/[^hHKkmsSAzZOvVXx]/).slice(-1)[0];\n dateSkeleton = skeleton.split(/[^GyYuUrQqMLlwWdDFgEec]/)[0];\n dateSkeleton = getBestMatchPattern(cldr, dateSkeleton);\n timeSkeleton = getBestMatchPattern(cldr, timeSkeleton);\n if (/(MMMM|LLLL).*[Ec]/.test(dateSkeleton)) {\n type = \"full\";\n } else if (/MMMM|LLLL/.test(dateSkeleton)) {\n type = \"long\";\n } else if (/MMM|LLL/.test(dateSkeleton)) {\n type = \"medium\";\n } else {\n type = \"short\";\n }\n if (dateSkeleton && timeSkeleton) {\n result = combineDateTime(type, dateSkeleton, timeSkeleton);\n } else {\n result = dateSkeleton || timeSkeleton;\n }\n break;\n case \"date\" in options:\n case \"time\" in options:\n result = cldr.main([\"dates/calendars/gregorian\", \"date\" in options ? \"dateFormats\" : \"timeFormats\", options.date || options.time]);\n break;\n case \"datetime\" in options:\n result = combineDateTime(options.datetime, cldr.main([\"dates/calendars/gregorian/dateFormats\", options.datetime]), cldr.main([\"dates/calendars/gregorian/timeFormats\", options.datetime]));\n break;\n case \"raw\" in options:\n result = options.raw;\n break;\n default:\n throw createErrorInvalidParameterValue({\n name: \"options\",\n value: options\n });\n }\n return result;\n };\n var dateWeekDays = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"];\n\n /**\n * firstDayOfWeek\n */\n var dateFirstDayOfWeek = function (cldr) {\n return dateWeekDays.indexOf(cldr.supplemental.weekData.firstDay());\n };\n\n /**\n * getTimeZoneName( length, type )\n */\n var dateGetTimeZoneName = function (length, type, timeZone, cldr) {\n var metaZone, result;\n if (!timeZone) {\n return;\n }\n result = cldr.main([\"dates/timeZoneNames/zone\", timeZone, length < 4 ? \"short\" : \"long\", type]);\n if (result) {\n return result;\n }\n\n // The latest metazone data of the metazone array.\n // TODO expand to support the historic metazones based on the given date.\n metaZone = cldr.supplemental([\"metaZones/metazoneInfo/timezone\", timeZone, 0, \"usesMetazone/_mzone\"]);\n return cldr.main([\"dates/timeZoneNames/metazone\", metaZone, length < 4 ? \"short\" : \"long\", type]);\n };\n\n /**\n * timezoneHourFormatShortH( hourFormat )\n *\n * @hourFormat [String]\n *\n * Unofficial deduction of the short hourFormat given time zone `hourFormat` element.\n * Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n *\n * Example:\n * - \"+HH.mm;-HH.mm\" => \"+H;-H\"\n * - \"+HH:mm;-HH:mm\" => \"+H;-H\"\n * - \"+HH:mm;−HH:mm\" => \"+H;−H\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+H:-H\"\n */\n var dateTimezoneHourFormatH = function (hourFormat) {\n return hourFormat.split(\";\").map(function (format) {\n return format.slice(0, format.indexOf(\"H\") + 1);\n }).join(\";\");\n };\n\n /**\n * timezoneHourFormatLongHm( hourFormat )\n *\n * @hourFormat [String]\n *\n * Unofficial deduction of the short hourFormat given time zone `hourFormat` element.\n * Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n *\n * Example (hFormat === \"H\"): (used for short Hm)\n * - \"+HH.mm;-HH.mm\" => \"+H.mm;-H.mm\"\n * - \"+HH:mm;-HH:mm\" => \"+H:mm;-H:mm\"\n * - \"+HH:mm;−HH:mm\" => \"+H:mm;−H:mm\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+Hmm:-Hmm\"\n *\n * Example (hFormat === \"HH\": (used for long Hm)\n * - \"+HH.mm;-HH.mm\" => \"+HH.mm;-HH.mm\"\n * - \"+HH:mm;-HH:mm\" => \"+HH:mm;-HH:mm\"\n * - \"+H:mm;-H:mm\" => \"+HH:mm;-HH:mm\"\n * - \"+HH:mm;−HH:mm\" => \"+HH:mm;−HH:mm\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+HHmm:-HHmm\"\n */\n var dateTimezoneHourFormatHm = function (hourFormat, hFormat) {\n return hourFormat.split(\";\").map(function (format) {\n var parts = format.split(/H+/);\n parts.splice(1, 0, hFormat);\n return parts.join(\"\");\n }).join(\";\");\n };\n var runtimeCacheDataBind = function (key, data) {\n var fn = function () {\n return data;\n };\n fn.dataCacheKey = key;\n return fn;\n };\n\n /**\n * properties( pattern, cldr )\n *\n * @pattern [String] raw pattern.\n * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n *\n * @cldr [Cldr instance].\n *\n * Return the properties given the pattern and cldr.\n *\n * TODO Support other calendar types.\n */\n var dateFormatProperties = function (pattern, cldr, timeZone) {\n var properties = {\n numberFormatters: {},\n pattern: pattern,\n timeSeparator: numberSymbol(\"timeSeparator\", cldr)\n },\n widths = [\"abbreviated\", \"wide\", \"narrow\"];\n function setNumberFormatterPattern(pad) {\n properties.numberFormatters[pad] = stringPad(\"\", pad);\n }\n if (timeZone) {\n properties.timeZoneData = runtimeCacheDataBind(\"iana/\" + timeZone, {\n offsets: cldr.get([\"globalize-iana/zoneData\", timeZone, \"offsets\"]),\n untils: cldr.get([\"globalize-iana/zoneData\", timeZone, \"untils\"]),\n isdsts: cldr.get([\"globalize-iana/zoneData\", timeZone, \"isdsts\"])\n });\n }\n pattern.replace(datePatternRe, function (current) {\n var aux, chr, daylightTzName, formatNumber, genericTzName, length, standardTzName;\n chr = current.charAt(0);\n length = current.length;\n if (chr === \"j\") {\n // Locale preferred hHKk.\n // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n properties.preferredTime = chr = cldr.supplemental.timeData.preferred();\n }\n\n // ZZZZ: same as \"OOOO\".\n if (chr === \"Z\" && length === 4) {\n chr = \"O\";\n length = 4;\n }\n\n // z...zzz: \"{shortRegion}\", eg. \"PST\" or \"PDT\".\n // zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n // e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n if (chr === \"z\") {\n standardTzName = dateGetTimeZoneName(length, \"standard\", timeZone, cldr);\n daylightTzName = dateGetTimeZoneName(length, \"daylight\", timeZone, cldr);\n if (standardTzName) {\n properties.standardTzName = standardTzName;\n }\n if (daylightTzName) {\n properties.daylightTzName = daylightTzName;\n }\n\n // Fall through the \"O\" format in case one name is missing.\n if (!standardTzName || !daylightTzName) {\n chr = \"O\";\n if (length < 4) {\n length = 1;\n }\n }\n }\n\n // v...vvv: \"{shortRegion}\", eg. \"PT\".\n // vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n // e.g., \"Pacific Time\"\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n if (chr === \"v\") {\n genericTzName = dateGetTimeZoneName(length, \"generic\", timeZone, cldr);\n\n // Fall back to \"V\" format.\n if (!genericTzName) {\n chr = \"V\";\n length = 4;\n }\n }\n switch (chr) {\n // Era\n case \"G\":\n properties.eras = cldr.main([\"dates/calendars/gregorian/eras\", length <= 3 ? \"eraAbbr\" : length === 4 ? \"eraNames\" : \"eraNarrow\"]);\n break;\n\n // Year\n case \"y\":\n // Plain year.\n formatNumber = true;\n break;\n case \"Y\":\n // Year in \"Week of Year\"\n properties.firstDay = dateFirstDayOfWeek(cldr);\n properties.minDays = cldr.supplemental.weekData.minDays();\n formatNumber = true;\n break;\n case \"u\": // Extended year. Need to be implemented.\n case \"U\":\n // Cyclic year name. Need to be implemented.\n throw createErrorUnsupportedFeature({\n feature: \"year pattern `\" + chr + \"`\"\n });\n\n // Quarter\n case \"Q\":\n case \"q\":\n if (length > 2) {\n if (!properties.quarters) {\n properties.quarters = {};\n }\n if (!properties.quarters[chr]) {\n properties.quarters[chr] = {};\n }\n properties.quarters[chr][length] = cldr.main([\"dates/calendars/gregorian/quarters\", chr === \"Q\" ? \"format\" : \"stand-alone\", widths[length - 3]]);\n } else {\n formatNumber = true;\n }\n break;\n\n // Month\n case \"M\":\n case \"L\":\n if (length > 2) {\n if (!properties.months) {\n properties.months = {};\n }\n if (!properties.months[chr]) {\n properties.months[chr] = {};\n }\n properties.months[chr][length] = cldr.main([\"dates/calendars/gregorian/months\", chr === \"M\" ? \"format\" : \"stand-alone\", widths[length - 3]]);\n } else {\n formatNumber = true;\n }\n break;\n\n // Week - Week of Year (w) or Week of Month (W).\n case \"w\":\n case \"W\":\n properties.firstDay = dateFirstDayOfWeek(cldr);\n properties.minDays = cldr.supplemental.weekData.minDays();\n formatNumber = true;\n break;\n\n // Day\n case \"d\":\n case \"D\":\n case \"F\":\n formatNumber = true;\n break;\n case \"g\":\n // Modified Julian day. Need to be implemented.\n throw createErrorUnsupportedFeature({\n feature: \"Julian day pattern `g`\"\n });\n\n // Week day\n case \"e\":\n case \"c\":\n if (length <= 2) {\n properties.firstDay = dateFirstDayOfWeek(cldr);\n formatNumber = true;\n break;\n }\n\n /* falls through */\n case \"E\":\n if (!properties.days) {\n properties.days = {};\n }\n if (!properties.days[chr]) {\n properties.days[chr] = {};\n }\n if (length === 6) {\n // If short day names are not explicitly specified, abbreviated day names are\n // used instead.\n // http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n // http://unicode.org/cldr/trac/ticket/6790\n properties.days[chr][length] = cldr.main([\"dates/calendars/gregorian/days\", chr === \"c\" ? \"stand-alone\" : \"format\", \"short\"]) || cldr.main([\"dates/calendars/gregorian/days\", chr === \"c\" ? \"stand-alone\" : \"format\", \"abbreviated\"]);\n } else {\n properties.days[chr][length] = cldr.main([\"dates/calendars/gregorian/days\", chr === \"c\" ? \"stand-alone\" : \"format\", widths[length < 3 ? 0 : length - 3]]);\n }\n break;\n\n // Period (AM or PM)\n case \"a\":\n properties.dayPeriods = {\n am: cldr.main(\"dates/calendars/gregorian/dayPeriods/format/wide/am\"),\n pm: cldr.main(\"dates/calendars/gregorian/dayPeriods/format/wide/pm\")\n };\n break;\n\n // Hour\n case \"h\": // 1-12\n case \"H\": // 0-23\n case \"K\": // 0-11\n case \"k\": // 1-24\n\n // Minute\n // eslint-disable-next-line no-fallthrough\n case \"m\":\n\n // Second\n // eslint-disable-next-line no-fallthrough\n case \"s\":\n case \"S\":\n case \"A\":\n formatNumber = true;\n break;\n\n // Zone\n case \"v\":\n if (length !== 1 && length !== 4) {\n throw createErrorUnsupportedFeature({\n feature: \"timezone pattern `\" + pattern + \"`\"\n });\n }\n properties.genericTzName = genericTzName;\n break;\n case \"V\":\n if (length === 1) {\n throw createErrorUnsupportedFeature({\n feature: \"timezone pattern `\" + pattern + \"`\"\n });\n }\n if (timeZone) {\n if (length === 2) {\n properties.timeZoneName = timeZone;\n break;\n }\n var timeZoneName,\n exemplarCity = cldr.main([\"dates/timeZoneNames/zone\", timeZone, \"exemplarCity\"]);\n\n // Fallback logic to support CLDR v43 time zone name\n if (!exemplarCity && timeZone.split(\"/\").length == 2) {\n exemplarCity = timeZone.split(\"/\")[1].replace(/_|-/, \" \");\n }\n if (!exemplarCity && timeZone.split(\"/\").length == 3) {\n exemplarCity = timeZone.split(\"/\")[2].replace(/_|-/, \" \");\n }\n if (length === 3) {\n if (!exemplarCity) {\n exemplarCity = cldr.main([\"dates/timeZoneNames/zone/Etc/Unknown/exemplarCity\"]);\n }\n timeZoneName = exemplarCity;\n }\n if (exemplarCity && length === 4) {\n timeZoneName = formatMessage(cldr.main(\"dates/timeZoneNames/regionFormat\"), [exemplarCity]);\n }\n if (timeZoneName) {\n properties.timeZoneName = timeZoneName;\n break;\n }\n }\n if (current === \"v\") {\n length = 1;\n }\n\n /* falls through */\n case \"O\":\n // O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n // OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n properties.gmtFormat = cldr.main(\"dates/timeZoneNames/gmtFormat\");\n properties.gmtZeroFormat = cldr.main(\"dates/timeZoneNames/gmtZeroFormat\");\n\n // Unofficial deduction of the hourFormat variations.\n // Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n aux = cldr.main(\"dates/timeZoneNames/hourFormat\");\n properties.hourFormat = length < 4 ? [dateTimezoneHourFormatH(aux), dateTimezoneHourFormatHm(aux, \"H\")] : dateTimezoneHourFormatHm(aux, \"HH\");\n\n /* falls through */\n case \"Z\":\n case \"X\":\n case \"x\":\n setNumberFormatterPattern(1);\n setNumberFormatterPattern(2);\n break;\n }\n if (formatNumber) {\n setNumberFormatterPattern(length);\n }\n });\n return properties;\n };\n var dateFormatterFn = function (dateToPartsFormatter) {\n return function dateFormatter(value) {\n return partsJoin(dateToPartsFormatter(value));\n };\n };\n\n /**\n * parseProperties( cldr )\n *\n * @cldr [Cldr instance].\n *\n * @timeZone [String] FIXME.\n *\n * Return parser properties.\n */\n var dateParseProperties = function (cldr, timeZone) {\n var properties = {\n preferredTimeData: cldr.supplemental.timeData.preferred()\n };\n if (timeZone) {\n properties.timeZoneData = runtimeCacheDataBind(\"iana/\" + timeZone, {\n offsets: cldr.get([\"globalize-iana/zoneData\", timeZone, \"offsets\"]),\n untils: cldr.get([\"globalize-iana/zoneData\", timeZone, \"untils\"]),\n isdsts: cldr.get([\"globalize-iana/zoneData\", timeZone, \"isdsts\"])\n });\n }\n return properties;\n };\n var ZonedDateTime = function () {\n function definePrivateProperty(object, property, value) {\n Object.defineProperty(object, property, {\n value: value\n });\n }\n function getUntilsIndex(original, untils) {\n var index = 0;\n var originalTime = original.getTime();\n\n // TODO Should we do binary search for improved performance?\n while (index < untils.length - 1 && originalTime >= untils[index]) {\n index++;\n }\n return index;\n }\n function setWrap(fn) {\n var offset1 = this.getTimezoneOffset();\n var ret = fn();\n this.original.setTime(new Date(this.getTime()));\n var offset2 = this.getTimezoneOffset();\n if (offset2 - offset1) {\n this.original.setMinutes(this.original.getMinutes() + offset2 - offset1);\n }\n return ret;\n }\n var ZonedDateTime = function (date, timeZoneData) {\n definePrivateProperty(this, \"original\", new Date(date.getTime()));\n definePrivateProperty(this, \"local\", new Date(date.getTime()));\n definePrivateProperty(this, \"timeZoneData\", timeZoneData);\n definePrivateProperty(this, \"setWrap\", setWrap);\n if (!(timeZoneData.untils && timeZoneData.offsets && timeZoneData.isdsts)) {\n throw new Error(\"Invalid IANA data\");\n }\n this.setTime(this.local.getTime() - this.getTimezoneOffset() * 60 * 1000);\n };\n ZonedDateTime.prototype.clone = function () {\n return new ZonedDateTime(this.original, this.timeZoneData);\n };\n\n // Date field getters.\n [\"getFullYear\", \"getMonth\", \"getDate\", \"getDay\", \"getHours\", \"getMinutes\", \"getSeconds\", \"getMilliseconds\"].forEach(function (method) {\n // Corresponding UTC method, e.g., \"getUTCFullYear\" if method === \"getFullYear\".\n var utcMethod = \"getUTC\" + method.substr(3);\n ZonedDateTime.prototype[method] = function () {\n return this.local[utcMethod]();\n };\n });\n\n // Note: Define .valueOf = .getTime for arithmetic operations like date1 - date2.\n ZonedDateTime.prototype.valueOf = ZonedDateTime.prototype.getTime = function () {\n return this.local.getTime() + this.getTimezoneOffset() * 60 * 1000;\n };\n ZonedDateTime.prototype.getTimezoneOffset = function () {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n return this.timeZoneData.offsets[index];\n };\n\n // Date field setters.\n [\"setFullYear\", \"setMonth\", \"setDate\", \"setHours\", \"setMinutes\", \"setSeconds\", \"setMilliseconds\"].forEach(function (method) {\n // Corresponding UTC method, e.g., \"setUTCFullYear\" if method === \"setFullYear\".\n var utcMethod = \"setUTC\" + method.substr(3);\n ZonedDateTime.prototype[method] = function (value) {\n var local = this.local;\n // Note setWrap is needed for seconds and milliseconds just because\n // abs(value) could be >= a minute.\n return this.setWrap(function () {\n return local[utcMethod](value);\n });\n };\n });\n ZonedDateTime.prototype.setTime = function (time) {\n return this.local.setTime(time);\n };\n ZonedDateTime.prototype.isDST = function () {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n return Boolean(this.timeZoneData.isdsts[index]);\n };\n ZonedDateTime.prototype.inspect = function () {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n var abbrs = this.timeZoneData.abbrs;\n return this.local.toISOString().replace(/Z$/, \"\") + \" \" + (abbrs && abbrs[index] + \" \" || this.getTimezoneOffset() * -1 + \" \") + (this.isDST() ? \"(daylight savings)\" : \"\");\n };\n ZonedDateTime.prototype.toDate = function () {\n return new Date(this.getTime());\n };\n\n // Type cast getters.\n [\"toISOString\", \"toJSON\", \"toUTCString\"].forEach(function (method) {\n ZonedDateTime.prototype[method] = function () {\n return this.toDate()[method]();\n };\n });\n return ZonedDateTime;\n }();\n\n /**\n * isLeapYear( year )\n *\n * @year [Number]\n *\n * Returns an indication whether the specified year is a leap year.\n */\n var dateIsLeapYear = function (year) {\n return new Date(year, 1, 29).getMonth() === 1;\n };\n\n /**\n * lastDayOfMonth( date )\n *\n * @date [Date]\n *\n * Return the last day of the given date's month\n */\n var dateLastDayOfMonth = function (date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n };\n\n /**\n * startOf changes the input to the beginning of the given unit.\n *\n * For example, starting at the start of a day, resets hours, minutes\n * seconds and milliseconds to 0. Starting at the month does the same, but\n * also sets the date to 1.\n *\n * Returns the modified date\n */\n var dateStartOf = function (date, unit) {\n date = date instanceof ZonedDateTime ? date.clone() : new Date(date.getTime());\n switch (unit) {\n case \"year\":\n date.setMonth(0);\n /* falls through */\n case \"month\":\n date.setDate(1);\n /* falls through */\n case \"day\":\n date.setHours(0);\n /* falls through */\n case \"hour\":\n date.setMinutes(0);\n /* falls through */\n case \"minute\":\n date.setSeconds(0);\n /* falls through */\n case \"second\":\n date.setMilliseconds(0);\n }\n return date;\n };\n\n /**\n * Differently from native date.setDate(), this function returns a date whose\n * day remains inside the month boundaries. For example:\n *\n * setDate( FebDate, 31 ): a \"Feb 28\" date.\n * setDate( SepDate, 31 ): a \"Sep 30\" date.\n */\n var dateSetDate = function (date, day) {\n var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n date.setDate(day < 1 ? 1 : day < lastDay ? day : lastDay);\n };\n\n /**\n * Differently from native date.setMonth(), this function adjusts date if\n * needed, so final month is always the one set.\n *\n * setMonth( Jan31Date, 1 ): a \"Feb 28\" date.\n * setDate( Jan31Date, 8 ): a \"Sep 30\" date.\n */\n var dateSetMonth = function (date, month) {\n var originalDate = date.getDate();\n date.setDate(1);\n date.setMonth(month);\n dateSetDate(date, originalDate);\n };\n var outOfRange = function (value, low, high) {\n return value < low || value > high;\n };\n\n /**\n * parse( value, tokens, properties )\n *\n * @value [String] string date.\n *\n * @tokens [Object] tokens returned by date/tokenizer.\n *\n * @properties [Object] output returned by date/tokenizer-properties.\n *\n * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n */\n var dateParse = function (_value, tokens, properties) {\n var amPm,\n day,\n daysOfYear,\n month,\n era,\n hour,\n hour12,\n timezoneOffset,\n valid,\n YEAR = 0,\n MONTH = 1,\n DAY = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECONDS = 6,\n date = new Date(),\n truncateAt = [],\n units = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"milliseconds\"];\n\n // Create globalize date with given timezone data.\n if (properties.timeZoneData) {\n date = new ZonedDateTime(date, properties.timeZoneData());\n }\n if (!tokens.length) {\n return null;\n }\n valid = tokens.every(function (token) {\n var century, chr, value, length;\n if (token.type === \"literal\") {\n // continue\n return true;\n }\n chr = token.type.charAt(0);\n length = token.type.length;\n if (chr === \"j\") {\n // Locale preferred hHKk.\n // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n chr = properties.preferredTimeData;\n }\n switch (chr) {\n // Era\n case \"G\":\n truncateAt.push(YEAR);\n era = +token.value;\n break;\n\n // Year\n case \"y\":\n value = token.value;\n if (length === 2) {\n if (outOfRange(value, 0, 99)) {\n return false;\n }\n\n // mimic dojo/date/locale: choose century to apply, according to a sliding\n // window of 80 years before and 20 years after present year.\n century = Math.floor(date.getFullYear() / 100) * 100;\n value += century;\n if (value > date.getFullYear() + 20) {\n value -= 100;\n }\n }\n date.setFullYear(value);\n truncateAt.push(YEAR);\n break;\n case \"Y\":\n // Year in \"Week of Year\"\n throw createErrorUnsupportedFeature({\n feature: \"year pattern `\" + chr + \"`\"\n });\n\n // Quarter (skip)\n case \"Q\":\n case \"q\":\n break;\n\n // Month\n case \"M\":\n case \"L\":\n if (length <= 2) {\n value = token.value;\n } else {\n value = +token.value;\n }\n if (outOfRange(value, 1, 12)) {\n return false;\n }\n\n // Setting the month later so that we have the correct year and can determine\n // the correct last day of February in case of leap year.\n month = value;\n truncateAt.push(MONTH);\n break;\n\n // Week (skip)\n case \"w\": // Week of Year.\n case \"W\":\n // Week of Month.\n break;\n\n // Day\n case \"d\":\n day = token.value;\n truncateAt.push(DAY);\n break;\n case \"D\":\n daysOfYear = token.value;\n truncateAt.push(DAY);\n break;\n case \"F\":\n // Day of Week in month. eg. 2nd Wed in July.\n // Skip\n break;\n\n // Week day\n case \"e\":\n case \"c\":\n case \"E\":\n // Skip.\n // value = arrayIndexOf( dateWeekDays, token.value );\n break;\n\n // Period (AM or PM)\n case \"a\":\n amPm = token.value;\n break;\n\n // Hour\n case \"h\":\n // 1-12\n value = token.value;\n if (outOfRange(value, 1, 12)) {\n return false;\n }\n hour = hour12 = true;\n date.setHours(value === 12 ? 0 : value);\n truncateAt.push(HOUR);\n break;\n case \"K\":\n // 0-11\n value = token.value;\n if (outOfRange(value, 0, 11)) {\n return false;\n }\n hour = hour12 = true;\n date.setHours(value);\n truncateAt.push(HOUR);\n break;\n case \"k\":\n // 1-24\n value = token.value;\n if (outOfRange(value, 1, 24)) {\n return false;\n }\n hour = true;\n date.setHours(value === 24 ? 0 : value);\n truncateAt.push(HOUR);\n break;\n case \"H\":\n // 0-23\n value = token.value;\n if (outOfRange(value, 0, 23)) {\n return false;\n }\n hour = true;\n date.setHours(value);\n truncateAt.push(HOUR);\n break;\n\n // Minute\n case \"m\":\n value = token.value;\n if (outOfRange(value, 0, 59)) {\n return false;\n }\n date.setMinutes(value);\n truncateAt.push(MINUTE);\n break;\n\n // Second\n case \"s\":\n value = token.value;\n if (outOfRange(value, 0, 59)) {\n return false;\n }\n date.setSeconds(value);\n truncateAt.push(SECOND);\n break;\n case \"A\":\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n\n /* falls through */\n case \"S\":\n value = Math.round(token.value * Math.pow(10, 3 - length));\n date.setMilliseconds(value);\n truncateAt.push(MILLISECONDS);\n break;\n\n // Zone\n case \"z\":\n case \"Z\":\n case \"O\":\n case \"v\":\n case \"V\":\n case \"X\":\n case \"x\":\n if (typeof token.value === \"number\") {\n timezoneOffset = token.value;\n }\n break;\n }\n return true;\n });\n if (!valid) {\n return null;\n }\n\n // 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null\n // if amPm && !hour12 || !amPm && hour12.\n if (hour && !(!amPm ^ hour12)) {\n return null;\n }\n if (era === 0) {\n // 1 BC = year 0\n date.setFullYear(date.getFullYear() * -1 + 1);\n }\n if (month !== undefined) {\n dateSetMonth(date, month - 1);\n }\n if (day !== undefined) {\n if (outOfRange(day, 1, dateLastDayOfMonth(date))) {\n return null;\n }\n date.setDate(day);\n } else if (daysOfYear !== undefined) {\n if (outOfRange(daysOfYear, 1, dateIsLeapYear(date.getFullYear()) ? 366 : 365)) {\n return null;\n }\n date.setMonth(0);\n date.setDate(daysOfYear);\n }\n if (hour12 && amPm === \"pm\") {\n date.setHours(date.getHours() + 12);\n }\n if (timezoneOffset !== undefined) {\n date.setMinutes(date.getMinutes() + timezoneOffset - date.getTimezoneOffset());\n }\n\n // Truncate date at the most precise unit defined. Eg.\n // If value is \"12/31\", and pattern is \"MM/dd\":\n // => new Date( , 12, 31, 0, 0, 0, 0 );\n truncateAt = Math.max.apply(null, truncateAt);\n date = dateStartOf(date, units[truncateAt]);\n\n // Get date back from globalize date.\n if (date instanceof ZonedDateTime) {\n date = date.toDate();\n }\n return date;\n };\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * tokenizer( value, numberParser, properties )\n *\n * @value [String] string date.\n *\n * @numberParser [Function]\n *\n * @properties [Object] output returned by date/tokenizer-properties.\n *\n * Returns an Array of tokens, eg. value \"5 o'clock PM\", pattern \"h 'o''clock' a\":\n * [{\n * type: \"h\",\n * lexeme: \"5\"\n * }, {\n * type: \"literal\",\n * lexeme: \" \"\n * }, {\n * type: \"literal\",\n * lexeme: \"o'clock\"\n * }, {\n * type: \"literal\",\n * lexeme: \" \"\n * }, {\n * type: \"a\",\n * lexeme: \"PM\",\n * value: \"pm\"\n * }]\n *\n * OBS: lexeme's are always String and may return invalid ranges depending of the token type.\n * Eg. \"99\" for month number.\n *\n * Return an empty Array when not successfully parsed.\n */\n var dateTokenizer = function (value, numberParser, properties) {\n var digitsRe,\n valid,\n tokens = [],\n widths = [\"abbreviated\", \"wide\", \"narrow\"];\n digitsRe = properties.digitsRe;\n value = looseMatching(value);\n valid = properties.pattern.match(datePatternRe).every(function (current) {\n var aux,\n chr,\n length,\n numeric,\n tokenRe,\n token = {};\n function hourFormatParse(tokenRe, numberParser) {\n var aux,\n isPositive,\n match = value.match(tokenRe);\n numberParser = numberParser || function (value) {\n return +value;\n };\n if (!match) {\n return false;\n }\n isPositive = match[1];\n\n // hourFormat containing H only, e.g., `+H;-H`\n if (match.length < 6) {\n aux = isPositive ? 1 : 3;\n token.value = numberParser(match[aux]) * 60;\n\n // hourFormat containing H and m, e.g., `+HHmm;-HHmm`\n } else if (match.length < 10) {\n aux = isPositive ? [1, 3] : [5, 7];\n token.value = numberParser(match[aux[0]]) * 60 + numberParser(match[aux[1]]);\n\n // hourFormat containing H, m, and s e.g., `+HHmmss;-HHmmss`\n } else {\n aux = isPositive ? [1, 3, 5] : [7, 9, 11];\n token.value = numberParser(match[aux[0]]) * 60 + numberParser(match[aux[1]]) + numberParser(match[aux[2]]) / 60;\n }\n if (isPositive) {\n token.value *= -1;\n }\n return true;\n }\n function oneDigitIfLengthOne() {\n if (length === 1) {\n // Unicode equivalent to /\\d/\n numeric = true;\n return tokenRe = digitsRe;\n }\n }\n function oneOrTwoDigitsIfLengthOne() {\n if (length === 1) {\n // Unicode equivalent to /\\d\\d?/\n numeric = true;\n return tokenRe = new RegExp(\"^(\" + digitsRe.source + \"){1,2}\");\n }\n }\n function oneOrTwoDigitsIfLengthOneOrTwo() {\n if (length === 1 || length === 2) {\n // Unicode equivalent to /\\d\\d?/\n numeric = true;\n return tokenRe = new RegExp(\"^(\" + digitsRe.source + \"){1,2}\");\n }\n }\n function twoDigitsIfLengthTwo() {\n if (length === 2) {\n // Unicode equivalent to /\\d\\d/\n numeric = true;\n return tokenRe = new RegExp(\"^(\" + digitsRe.source + \"){2}\");\n }\n }\n\n // Brute-force test every locale entry in an attempt to match the given value.\n // Return the first found one (and set token accordingly), or null.\n function lookup(path) {\n var array = properties[path.join(\"/\")];\n if (!array) {\n return null;\n }\n\n // array of pairs [key, value] sorted by desc value length.\n array.some(function (item) {\n var valueRe = item[1];\n if (valueRe.test(value)) {\n token.value = item[0];\n tokenRe = item[1];\n return true;\n }\n });\n return null;\n }\n token.type = current;\n chr = current.charAt(0);\n length = current.length;\n if (chr === \"Z\") {\n // Z..ZZZ: same as \"xxxx\".\n if (length < 4) {\n chr = \"x\";\n length = 4;\n\n // ZZZZ: same as \"OOOO\".\n } else if (length < 5) {\n chr = \"O\";\n length = 4;\n\n // ZZZZZ: same as \"XXXXX\"\n } else {\n chr = \"X\";\n length = 5;\n }\n }\n if (chr === \"z\") {\n if (properties.standardOrDaylightTzName) {\n token.value = null;\n tokenRe = properties.standardOrDaylightTzName;\n }\n }\n\n // v...vvv: \"{shortRegion}\", eg. \"PT\".\n // vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n // e.g., \"Pacific Time\"\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n if (chr === \"v\") {\n if (properties.genericTzName) {\n token.value = null;\n tokenRe = properties.genericTzName;\n\n // Fall back to \"V\" format.\n } else {\n chr = \"V\";\n length = 4;\n }\n }\n if (chr === \"V\" && properties.timeZoneName) {\n token.value = length === 2 ? properties.timeZoneName : null;\n tokenRe = properties.timeZoneNameRe;\n }\n switch (chr) {\n // Era\n case \"G\":\n lookup([\"gregorian/eras\", length <= 3 ? \"eraAbbr\" : length === 4 ? \"eraNames\" : \"eraNarrow\"]);\n break;\n\n // Year\n case \"y\":\n case \"Y\":\n numeric = true;\n\n // number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ...\n if (length === 1) {\n // Unicode equivalent to /\\d+/.\n tokenRe = new RegExp(\"^(\" + digitsRe.source + \")+\");\n } else if (length === 2) {\n // Lenient parsing: there's no year pattern to indicate non-zero-padded 2-digits\n // year, so parser accepts both zero-padded and non-zero-padded for `yy`.\n //\n // Unicode equivalent to /\\d\\d?/\n tokenRe = new RegExp(\"^(\" + digitsRe.source + \"){1,2}\");\n } else {\n // Unicode equivalent to /\\d{length,}/\n tokenRe = new RegExp(\"^(\" + digitsRe.source + \"){\" + length + \",}\");\n }\n break;\n\n // Quarter\n case \"Q\":\n case \"q\":\n // number l=1:{1}, l=2:{2}.\n // lookup l=3...\n oneDigitIfLengthOne() || twoDigitsIfLengthTwo() || lookup([\"gregorian/quarters\", chr === \"Q\" ? \"format\" : \"stand-alone\", widths[length - 3]]);\n break;\n\n // Month\n case \"M\":\n case \"L\":\n // number l=1:{1,2}, l=2:{2}.\n // lookup l=3...\n //\n // Lenient parsing: skeleton \"yMd\" (i.e., one M) may include MM for the pattern,\n // therefore parser accepts both zero-padded and non-zero-padded for M and MM.\n // Similar for L.\n oneOrTwoDigitsIfLengthOneOrTwo() || lookup([\"gregorian/months\", chr === \"M\" ? \"format\" : \"stand-alone\", widths[length - 3]]);\n break;\n\n // Day\n case \"D\":\n // number {l,3}.\n if (length <= 3) {\n // Equivalent to /\\d{length,3}/\n numeric = true;\n tokenRe = new RegExp(\"^(\" + digitsRe.source + \"){\" + length + \",3}\");\n }\n break;\n case \"W\":\n case \"F\":\n // number l=1:{1}.\n oneDigitIfLengthOne();\n break;\n\n // Week day\n case \"e\":\n case \"c\":\n // number l=1:{1}, l=2:{2}.\n // lookup for length >=3.\n if (length <= 2) {\n oneDigitIfLengthOne() || twoDigitsIfLengthTwo();\n break;\n }\n\n /* falls through */\n case \"E\":\n if (length === 6) {\n // Note: if short day names are not explicitly specified, abbreviated day\n // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n lookup([\"gregorian/days\", [chr === \"c\" ? \"stand-alone\" : \"format\"], \"short\"]) || lookup([\"gregorian/days\", [chr === \"c\" ? \"stand-alone\" : \"format\"], \"abbreviated\"]);\n } else {\n lookup([\"gregorian/days\", [chr === \"c\" ? \"stand-alone\" : \"format\"], widths[length < 3 ? 0 : length - 3]]);\n }\n break;\n\n // Period (AM or PM)\n case \"a\":\n lookup([\"gregorian/dayPeriods/format/wide\"]);\n break;\n\n // Week\n case \"w\":\n // number l1:{1,2}, l2:{2}.\n oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo();\n break;\n\n // Day, Hour, Minute, or Second\n case \"d\":\n case \"h\":\n case \"H\":\n case \"K\":\n case \"k\":\n case \"j\":\n case \"m\":\n case \"s\":\n // number l1:{1,2}, l2:{2}.\n //\n // Lenient parsing:\n // - skeleton \"hms\" (i.e., one m) always includes mm for the pattern, i.e., it's\n // impossible to use a different skeleton to parse non-zero-padded minutes,\n // therefore parser accepts both zero-padded and non-zero-padded for m. Similar\n // for seconds s.\n // - skeleton \"hms\" (i.e., one h) may include h or hh for the pattern, i.e., it's\n // impossible to use a different skeleton to parser non-zero-padded hours for some\n // locales, therefore parser accepts both zero-padded and non-zero-padded for h.\n // Similar for d (in skeleton yMd).\n oneOrTwoDigitsIfLengthOneOrTwo();\n break;\n case \"S\":\n // number {l}.\n\n // Unicode equivalent to /\\d{length}/\n numeric = true;\n tokenRe = new RegExp(\"^(\" + digitsRe.source + \"){\" + length + \"}\");\n break;\n case \"A\":\n // number {l+5}.\n\n // Unicode equivalent to /\\d{length+5}/\n numeric = true;\n tokenRe = new RegExp(\"^(\" + digitsRe.source + \"){\" + (length + 5) + \"}\");\n break;\n\n // Zone\n case \"v\":\n case \"V\":\n case \"z\":\n if (tokenRe && tokenRe.test(value)) {\n break;\n }\n if (chr === \"V\" && length === 2) {\n break;\n }\n\n /* falls through */\n case \"O\":\n // O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n // OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n if (value === properties[\"timeZoneNames/gmtZeroFormat\"]) {\n token.value = 0;\n tokenRe = properties[\"timeZoneNames/gmtZeroFormatRe\"];\n } else {\n aux = properties[\"timeZoneNames/hourFormat\"].some(function (hourFormatRe) {\n if (hourFormatParse(hourFormatRe, numberParser)) {\n tokenRe = hourFormatRe;\n return true;\n }\n });\n if (!aux) {\n return null;\n }\n }\n break;\n case \"X\":\n // Same as x*, except it uses \"Z\" for zero offset.\n if (value === \"Z\") {\n token.value = 0;\n tokenRe = /^Z/;\n break;\n }\n\n /* falls through */\n case \"x\":\n // x: hourFormat(\"+HH[mm];-HH[mm]\")\n // xx: hourFormat(\"+HHmm;-HHmm\")\n // xxx: hourFormat(\"+HH:mm;-HH:mm\")\n // xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n // xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n aux = properties.x.some(function (hourFormatRe) {\n if (hourFormatParse(hourFormatRe)) {\n tokenRe = hourFormatRe;\n return true;\n }\n });\n if (!aux) {\n return null;\n }\n break;\n case \"'\":\n token.type = \"literal\";\n tokenRe = new RegExp(\"^\" + regexpEscape(removeLiteralQuotes(current)));\n break;\n default:\n token.type = \"literal\";\n tokenRe = new RegExp(\"^\" + regexpEscape(current));\n }\n if (!tokenRe) {\n return false;\n }\n\n // Get lexeme and consume it.\n value = value.replace(tokenRe, function (lexeme) {\n token.lexeme = lexeme;\n if (numeric) {\n token.value = numberParser(lexeme);\n }\n return \"\";\n });\n if (!token.lexeme) {\n return false;\n }\n if (numeric && isNaN(token.value)) {\n return false;\n }\n tokens.push(token);\n return true;\n });\n if (value !== \"\") {\n valid = false;\n }\n return valid ? tokens : [];\n };\n var dateParserFn = function (numberParser, parseProperties, tokenizerProperties) {\n return function dateParser(value) {\n var tokens;\n validateParameterPresence(value, \"value\");\n validateParameterTypeString(value, \"value\");\n tokens = dateTokenizer(value, numberParser, tokenizerProperties);\n return dateParse(value, tokens, parseProperties) || null;\n };\n };\n var objectFilter = function (object, testRe) {\n var key,\n copy = {};\n for (key in object) {\n if (testRe.test(key)) {\n copy[key] = object[key];\n }\n }\n return copy;\n };\n\n /**\n * tokenizerProperties( pattern, cldr )\n *\n * @pattern [String] raw pattern.\n *\n * @cldr [Cldr instance].\n *\n * Return Object with data that will be used by tokenizer.\n */\n var dateTokenizerProperties = function (pattern, cldr, timeZone) {\n var digitsReSource,\n properties = {\n pattern: looseMatching(pattern)\n },\n timeSeparator = numberSymbol(\"timeSeparator\", cldr),\n widths = [\"abbreviated\", \"wide\", \"narrow\"];\n digitsReSource = numberNumberingSystemDigitsMap(cldr);\n digitsReSource = digitsReSource ? \"[\" + digitsReSource + \"]\" : \"\\\\d\";\n properties.digitsRe = new RegExp(digitsReSource);\n\n // Transform:\n // - \"+H;-H\" -> /\\+(\\d\\d?)|-(\\d\\d?)/\n // - \"+HH;-HH\" -> /\\+(\\d\\d)|-(\\d\\d)/\n // - \"+HHmm;-HHmm\" -> /\\+(\\d\\d)(\\d\\d)|-(\\d\\d)(\\d\\d)/\n // - \"+HH:mm;-HH:mm\" -> /\\+(\\d\\d):(\\d\\d)|-(\\d\\d):(\\d\\d)/\n //\n // If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.:\n // - \"+H;-H\" -> /GMT\\+(\\d\\d?)|GMT-(\\d\\d?)/\n function hourFormatRe(hourFormat, gmtFormat, digitsReSource, timeSeparator) {\n var re;\n if (!digitsReSource) {\n digitsReSource = \"\\\\d\";\n }\n if (!gmtFormat) {\n gmtFormat = \"{0}\";\n }\n re = hourFormat.replace(\"+\", \"\\\\+\")\n\n // Unicode equivalent to (\\\\d\\\\d)\n .replace(/HH|mm|ss/g, \"((\" + digitsReSource + \"){2})\")\n\n // Unicode equivalent to (\\\\d\\\\d?)\n .replace(/H|m/g, \"((\" + digitsReSource + \"){1,2})\");\n if (timeSeparator) {\n re = re.replace(/:/g, timeSeparator);\n }\n re = re.split(\";\").map(function (part) {\n return gmtFormat.replace(\"{0}\", part);\n }).join(\"|\");\n return new RegExp(\"^\" + re);\n }\n function populateProperties(path, value) {\n // Skip\n var skipRe = /(timeZoneNames\\/zone|supplemental\\/metaZones|timeZoneNames\\/metazone|timeZoneNames\\/regionFormat|timeZoneNames\\/gmtFormat)/;\n if (skipRe.test(path)) {\n return;\n }\n if (!value) {\n return;\n }\n\n // The `dates` and `calendars` trim's purpose is to reduce properties' key size only.\n path = path.replace(/^.*\\/dates\\//, \"\").replace(/calendars\\//, \"\");\n\n // Specific filter for \"gregorian/dayPeriods/format/wide\".\n if (path === \"gregorian/dayPeriods/format/wide\") {\n value = objectFilter(value, /^am|^pm/);\n }\n\n // Transform object into array of pairs [key, /value/], sort by desc value length.\n if (isPlainObject(value)) {\n value = Object.keys(value).map(function (key) {\n return [key, new RegExp(\"^\" + regexpEscape(looseMatching(value[key])))];\n }).sort(function (a, b) {\n return b[1].source.length - a[1].source.length;\n });\n\n // If typeof value === \"string\".\n } else {\n value = looseMatching(value);\n }\n properties[path] = value;\n }\n function regexpSourceSomeTerm(terms) {\n return \"(\" + terms.filter(function (item) {\n return item;\n }).reduce(function (memo, item) {\n return memo + \"|\" + item;\n }) + \")\";\n }\n cldr.on(\"get\", populateProperties);\n pattern.match(datePatternRe).forEach(function (current) {\n var aux, chr, daylightTzName, gmtFormat, length, standardTzName;\n chr = current.charAt(0);\n length = current.length;\n if (chr === \"Z\") {\n if (length < 5) {\n chr = \"O\";\n length = 4;\n } else {\n chr = \"X\";\n length = 5;\n }\n }\n\n // z...zzz: \"{shortRegion}\", eg. \"PST\" or \"PDT\".\n // zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n // e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n if (chr === \"z\") {\n standardTzName = dateGetTimeZoneName(length, \"standard\", timeZone, cldr);\n daylightTzName = dateGetTimeZoneName(length, \"daylight\", timeZone, cldr);\n if (standardTzName) {\n standardTzName = regexpEscape(looseMatching(standardTzName));\n }\n if (daylightTzName) {\n daylightTzName = regexpEscape(looseMatching(daylightTzName));\n }\n if (standardTzName || daylightTzName) {\n properties.standardOrDaylightTzName = new RegExp(\"^\" + regexpSourceSomeTerm([standardTzName, daylightTzName]));\n }\n\n // Fall through the \"O\" format in case one name is missing.\n if (!standardTzName || !daylightTzName) {\n chr = \"O\";\n if (length < 4) {\n length = 1;\n }\n }\n }\n\n // v...vvv: \"{shortRegion}\", eg. \"PT\".\n // vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n // e.g., \"Pacific Time\"\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n if (chr === \"v\") {\n if (length !== 1 && length !== 4) {\n throw createErrorUnsupportedFeature({\n feature: \"timezone pattern `\" + pattern + \"`\"\n });\n }\n var genericTzName = dateGetTimeZoneName(length, \"generic\", timeZone, cldr);\n if (genericTzName) {\n properties.genericTzName = new RegExp(\"^\" + regexpEscape(looseMatching(genericTzName)));\n chr = \"O\";\n\n // Fall back to \"V\" format.\n } else {\n chr = \"V\";\n length = 4;\n }\n }\n switch (chr) {\n // Era\n case \"G\":\n cldr.main([\"dates/calendars/gregorian/eras\", length <= 3 ? \"eraAbbr\" : length === 4 ? \"eraNames\" : \"eraNarrow\"]);\n break;\n\n // Year\n case \"u\": // Extended year. Need to be implemented.\n case \"U\":\n // Cyclic year name. Need to be implemented.\n throw createErrorUnsupportedFeature({\n feature: \"year pattern `\" + chr + \"`\"\n });\n\n // Quarter\n case \"Q\":\n case \"q\":\n if (length > 2) {\n cldr.main([\"dates/calendars/gregorian/quarters\", chr === \"Q\" ? \"format\" : \"stand-alone\", widths[length - 3]]);\n }\n break;\n\n // Month\n case \"M\":\n case \"L\":\n // number l=1:{1,2}, l=2:{2}.\n // lookup l=3...\n if (length > 2) {\n cldr.main([\"dates/calendars/gregorian/months\", chr === \"M\" ? \"format\" : \"stand-alone\", widths[length - 3]]);\n }\n break;\n\n // Day\n case \"g\":\n // Modified Julian day. Need to be implemented.\n throw createErrorUnsupportedFeature({\n feature: \"Julian day pattern `g`\"\n });\n\n // Week day\n case \"e\":\n case \"c\":\n // lookup for length >=3.\n if (length <= 2) {\n break;\n }\n\n /* falls through */\n case \"E\":\n if (length === 6) {\n // Note: if short day names are not explicitly specified, abbreviated day\n // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n // eslint-disable-next-line no-unused-expressions\n cldr.main([\"dates/calendars/gregorian/days\", [chr === \"c\" ? \"stand-alone\" : \"format\"], \"short\"]) || cldr.main([\"dates/calendars/gregorian/days\", [chr === \"c\" ? \"stand-alone\" : \"format\"], \"abbreviated\"]);\n } else {\n cldr.main([\"dates/calendars/gregorian/days\", [chr === \"c\" ? \"stand-alone\" : \"format\"], widths[length < 3 ? 0 : length - 3]]);\n }\n break;\n\n // Period (AM or PM)\n case \"a\":\n cldr.main(\"dates/calendars/gregorian/dayPeriods/format/wide\");\n break;\n\n // Zone\n case \"V\":\n if (length === 1) {\n throw createErrorUnsupportedFeature({\n feature: \"timezone pattern `\" + pattern + \"`\"\n });\n }\n if (timeZone) {\n if (length === 2) {\n // Skip looseMatching processing since timeZone is a canonical posix value.\n properties.timeZoneName = timeZone;\n properties.timeZoneNameRe = new RegExp(\"^\" + regexpEscape(timeZone));\n break;\n }\n var timeZoneName,\n exemplarCity = cldr.main([\"dates/timeZoneNames/zone\", timeZone, \"exemplarCity\"]);\n // Fallback logic to support CLDR v43 time zone name\n if (!exemplarCity && timeZone.split(\"/\").length == 2) {\n exemplarCity = timeZone.split(\"/\")[1].replace(/_|-/, \" \");\n }\n if (!exemplarCity && timeZone.split(\"/\").length == 3) {\n exemplarCity = timeZone.split(\"/\")[2].replace(/_|-/, \" \");\n }\n if (length === 3) {\n if (!exemplarCity) {\n exemplarCity = cldr.main([\"dates/timeZoneNames/zone/Etc/Unknown/exemplarCity\"]);\n }\n timeZoneName = exemplarCity;\n }\n if (exemplarCity && length === 4) {\n timeZoneName = formatMessage(cldr.main(\"dates/timeZoneNames/regionFormat\"), [exemplarCity]);\n }\n if (timeZoneName) {\n timeZoneName = looseMatching(timeZoneName);\n properties.timeZoneName = timeZoneName;\n properties.timeZoneNameRe = new RegExp(\"^\" + regexpEscape(timeZoneName));\n }\n }\n if (current === \"v\") {\n length = 1;\n }\n\n /* falls through */\n case \"z\":\n case \"O\":\n gmtFormat = cldr.main(\"dates/timeZoneNames/gmtFormat\");\n cldr.main(\"dates/timeZoneNames/gmtZeroFormat\");\n cldr.main(\"dates/timeZoneNames/hourFormat\");\n properties[\"timeZoneNames/gmtZeroFormatRe\"] = new RegExp(\"^\" + regexpEscape(properties[\"timeZoneNames/gmtZeroFormat\"]));\n aux = properties[\"timeZoneNames/hourFormat\"];\n properties[\"timeZoneNames/hourFormat\"] = (length < 4 ? [dateTimezoneHourFormatHm(aux, \"H\"), dateTimezoneHourFormatH(aux)] : [dateTimezoneHourFormatHm(aux, \"HH\")]).map(function (hourFormat) {\n return hourFormatRe(hourFormat, gmtFormat, digitsReSource, timeSeparator);\n });\n\n /* falls through */\n case \"X\":\n case \"x\":\n // x: hourFormat(\"+HH[mm];-HH[mm]\")\n // xx: hourFormat(\"+HHmm;-HHmm\")\n // xxx: hourFormat(\"+HH:mm;-HH:mm\")\n // xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n // xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n properties.x = [[\"+HHmm;-HHmm\", \"+HH;-HH\"], [\"+HHmm;-HHmm\"], [\"+HH:mm;-HH:mm\"], [\"+HHmmss;-HHmmss\", \"+HHmm;-HHmm\"], [\"+HH:mm:ss;-HH:mm:ss\", \"+HH:mm;-HH:mm\"]][length - 1].map(function (hourFormat) {\n return hourFormatRe(hourFormat);\n });\n }\n });\n cldr.off(\"get\", populateProperties);\n return properties;\n };\n\n /**\n * dayOfWeek( date, firstDay )\n *\n * @date\n *\n * @firstDay the result of `dateFirstDayOfWeek( cldr )`\n *\n * Return the day of the week normalized by the territory's firstDay [0-6].\n * Eg for \"mon\":\n * - return 0 if territory is GB, or BR, or DE, or FR (week starts on \"mon\");\n * - return 1 if territory is US (week starts on \"sun\");\n * - return 2 if territory is EG (week starts on \"sat\");\n */\n var dateDayOfWeek = function (date, firstDay) {\n return (date.getDay() - firstDay + 7) % 7;\n };\n\n /**\n * distanceInDays( from, to )\n *\n * Return the distance in days between from and to Dates.\n */\n var dateDistanceInDays = function (from, to) {\n var inDays = 864e5;\n return (to.getTime() - from.getTime()) / inDays;\n };\n\n /**\n * dayOfYear\n *\n * Return the distance in days of the date to the begin of the year [0-d].\n */\n var dateDayOfYear = function (date) {\n return Math.floor(dateDistanceInDays(dateStartOf(date, \"year\"), date));\n };\n\n // Invert key and values, e.g., {\"year\": \"yY\"} ==> {\"y\": \"year\", \"Y\": \"year\"}\n var dateFieldsMap = objectInvert({\n era: \"G\",\n year: \"yY\",\n quarter: \"qQ\",\n month: \"ML\",\n week: \"wW\",\n day: \"dDF\",\n weekday: \"ecE\",\n dayperiod: \"a\",\n hour: \"hHkK\",\n minute: \"m\",\n second: \"sSA\",\n zone: \"zvVOxX\"\n }, function (object, key, value) {\n value.split(\"\").forEach(function (symbol) {\n object[symbol] = key;\n });\n return object;\n });\n\n /**\n * millisecondsInDay\n */\n var dateMillisecondsInDay = function (date) {\n // TODO Handle daylight savings discontinuities\n return date - dateStartOf(date, \"day\");\n };\n\n /**\n * hourFormat( date, format, timeSeparator, formatNumber )\n *\n * Return date's timezone offset according to the format passed.\n * Eg for format when timezone offset is 180:\n * - \"+H;-H\": -3\n * - \"+HHmm;-HHmm\": -0300\n * - \"+HH:mm;-HH:mm\": -03:00\n * - \"+HH:mm:ss;-HH:mm:ss\": -03:00:00\n */\n var dateTimezoneHourFormat = function (date, format, timeSeparator, formatNumber) {\n var absOffset,\n offset = date.getTimezoneOffset();\n absOffset = Math.abs(offset);\n formatNumber = formatNumber || {\n 1: function (value) {\n return stringPad(value, 1);\n },\n 2: function (value) {\n return stringPad(value, 2);\n }\n };\n return format\n\n // Pick the correct sign side (+ or -).\n .split(\";\")[offset > 0 ? 1 : 0] // Localize time separator\n .replace(\":\", timeSeparator)\n\n // Update hours offset.\n .replace(/HH?/, function (match) {\n return formatNumber[match.length](Math.floor(absOffset / 60));\n })\n\n // Update minutes offset and return.\n .replace(/mm/, function () {\n return formatNumber[2](Math.floor(absOffset % 60));\n })\n\n // Update minutes offset and return.\n .replace(/ss/, function () {\n return formatNumber[2](Math.floor(absOffset % 1 * 60));\n });\n };\n\n /**\n * format( date, properties )\n *\n * @date [Date instance].\n *\n * @properties\n *\n * TODO Support other calendar types.\n *\n * Disclosure: this function borrows excerpts of dojo/date/locale.\n */\n var dateFormat = function (date, numberFormatters, properties) {\n var parts = [];\n var timeSeparator = properties.timeSeparator;\n\n // create globalize date with given timezone data\n if (properties.timeZoneData) {\n date = new ZonedDateTime(date, properties.timeZoneData());\n }\n properties.pattern.replace(datePatternRe, function (current) {\n var aux,\n dateField,\n type,\n value,\n chr = current.charAt(0),\n length = current.length;\n if (chr === \"j\") {\n // Locale preferred hHKk.\n // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n chr = properties.preferredTime;\n }\n if (chr === \"Z\") {\n // Z..ZZZ: same as \"xxxx\".\n if (length < 4) {\n chr = \"x\";\n length = 4;\n\n // ZZZZ: same as \"OOOO\".\n } else if (length < 5) {\n chr = \"O\";\n length = 4;\n\n // ZZZZZ: same as \"XXXXX\"\n } else {\n chr = \"X\";\n length = 5;\n }\n }\n\n // z...zzz: \"{shortRegion}\", e.g., \"PST\" or \"PDT\".\n // zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n // e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n if (chr === \"z\") {\n if (date.isDST) {\n value = date.isDST() ? properties.daylightTzName : properties.standardTzName;\n }\n\n // Fall back to \"O\" format.\n if (!value) {\n chr = \"O\";\n if (length < 4) {\n length = 1;\n }\n }\n }\n switch (chr) {\n // Era\n case \"G\":\n value = properties.eras[date.getFullYear() < 0 ? 0 : 1];\n break;\n\n // Year\n case \"y\":\n // Plain year.\n // The length specifies the padding, but for two letters it also specifies the\n // maximum length.\n value = date.getFullYear();\n if (length === 2) {\n value = String(value);\n value = +value.substr(value.length - 2);\n }\n break;\n case \"Y\":\n // Year in \"Week of Year\"\n // The length specifies the padding, but for two letters it also specifies the\n // maximum length.\n // yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays\n value = new Date(date.getTime());\n value.setDate(value.getDate() + 7 - dateDayOfWeek(date, properties.firstDay) - properties.firstDay - properties.minDays);\n value = value.getFullYear();\n if (length === 2) {\n value = String(value);\n value = +value.substr(value.length - 2);\n }\n break;\n\n // Quarter\n case \"Q\":\n case \"q\":\n value = Math.ceil((date.getMonth() + 1) / 3);\n if (length > 2) {\n value = properties.quarters[chr][length][value];\n }\n break;\n\n // Month\n case \"M\":\n case \"L\":\n value = date.getMonth() + 1;\n if (length > 2) {\n value = properties.months[chr][length][value];\n }\n break;\n\n // Week\n case \"w\":\n // Week of Year.\n // woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0.\n // TODO should pad on ww? Not documented, but I guess so.\n value = dateDayOfWeek(dateStartOf(date, \"year\"), properties.firstDay);\n value = Math.ceil((dateDayOfYear(date) + value) / 7) - (7 - value >= properties.minDays ? 0 : 1);\n break;\n case \"W\":\n // Week of Month.\n // wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0.\n value = dateDayOfWeek(dateStartOf(date, \"month\"), properties.firstDay);\n value = Math.ceil((date.getDate() + value) / 7) - (7 - value >= properties.minDays ? 0 : 1);\n break;\n\n // Day\n case \"d\":\n value = date.getDate();\n break;\n case \"D\":\n value = dateDayOfYear(date) + 1;\n break;\n case \"F\":\n // Day of Week in month. eg. 2nd Wed in July.\n value = Math.floor(date.getDate() / 7) + 1;\n break;\n\n // Week day\n case \"e\":\n case \"c\":\n if (length <= 2) {\n // Range is [1-7] (deduced by example provided on documentation)\n // TODO Should pad with zeros (not specified in the docs)?\n value = dateDayOfWeek(date, properties.firstDay) + 1;\n break;\n }\n\n /* falls through */\n case \"E\":\n value = dateWeekDays[date.getDay()];\n value = properties.days[chr][length][value];\n break;\n\n // Period (AM or PM)\n case \"a\":\n value = properties.dayPeriods[date.getHours() < 12 ? \"am\" : \"pm\"];\n break;\n\n // Hour\n case \"h\":\n // 1-12\n value = date.getHours() % 12 || 12;\n break;\n case \"H\":\n // 0-23\n value = date.getHours();\n break;\n case \"K\":\n // 0-11\n value = date.getHours() % 12;\n break;\n case \"k\":\n // 1-24\n value = date.getHours() || 24;\n break;\n\n // Minute\n case \"m\":\n value = date.getMinutes();\n break;\n\n // Second\n case \"s\":\n value = date.getSeconds();\n break;\n case \"S\":\n value = Math.round(date.getMilliseconds() * Math.pow(10, length - 3));\n break;\n case \"A\":\n value = Math.round(dateMillisecondsInDay(date) * Math.pow(10, length - 3));\n break;\n\n // Zone\n case \"z\":\n break;\n case \"v\":\n // v...vvv: \"{shortRegion}\", eg. \"PT\".\n // vvvv: \"{regionName} {Time}\",\n // e.g., \"Pacific Time\".\n if (properties.genericTzName) {\n value = properties.genericTzName;\n break;\n }\n\n /* falls through */\n case \"V\":\n //VVVV: \"{explarCity} {Time}\", e.g., \"Los Angeles Time\"\n if (properties.timeZoneName) {\n value = properties.timeZoneName;\n break;\n }\n if (current === \"v\") {\n length = 1;\n }\n\n /* falls through */\n case \"O\":\n // O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n // OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n if (date.getTimezoneOffset() === 0) {\n value = properties.gmtZeroFormat;\n } else {\n // If O..OOO and timezone offset has non-zero minutes, show minutes.\n if (length < 4) {\n aux = date.getTimezoneOffset();\n aux = properties.hourFormat[aux % 60 - aux % 1 === 0 ? 0 : 1];\n } else {\n aux = properties.hourFormat;\n }\n value = dateTimezoneHourFormat(date, aux, timeSeparator, numberFormatters);\n value = properties.gmtFormat.replace(/\\{0\\}/, value);\n }\n break;\n case \"X\":\n // Same as x*, except it uses \"Z\" for zero offset.\n if (date.getTimezoneOffset() === 0) {\n value = \"Z\";\n break;\n }\n\n /* falls through */\n case \"x\":\n // x: hourFormat(\"+HH[mm];-HH[mm]\")\n // xx: hourFormat(\"+HHmm;-HHmm\")\n // xxx: hourFormat(\"+HH:mm;-HH:mm\")\n // xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n // xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n aux = date.getTimezoneOffset();\n\n // If x and timezone offset has non-zero minutes, use xx (i.e., show minutes).\n if (length === 1 && aux % 60 - aux % 1 !== 0) {\n length += 1;\n }\n\n // If (xxxx or xxxxx) and timezone offset has zero seconds, use xx or xxx\n // respectively (i.e., don't show optional seconds).\n if ((length === 4 || length === 5) && aux % 1 === 0) {\n length -= 2;\n }\n value = [\"+HH;-HH\", \"+HHmm;-HHmm\", \"+HH:mm;-HH:mm\", \"+HHmmss;-HHmmss\", \"+HH:mm:ss;-HH:mm:ss\"][length - 1];\n value = dateTimezoneHourFormat(date, value, \":\");\n break;\n\n // timeSeparator\n case \":\":\n value = timeSeparator;\n break;\n\n // ' literals.\n case \"'\":\n value = removeLiteralQuotes(current);\n break;\n\n // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and\n // arabic characters.\n default:\n value = current;\n }\n if (typeof value === \"number\") {\n value = numberFormatters[length](value);\n }\n dateField = dateFieldsMap[chr];\n type = dateField ? dateField : \"literal\";\n partsPush(parts, type, value);\n });\n return parts;\n };\n var dateToPartsFormatterFn = function (numberFormatters, properties) {\n return function dateToPartsFormatter(value) {\n validateParameterPresence(value, \"value\");\n validateParameterTypeDate(value, \"value\");\n return dateFormat(value, numberFormatters, properties);\n };\n };\n function optionsHasStyle(options) {\n return options.skeleton !== undefined || options.date !== undefined || options.time !== undefined || options.datetime !== undefined || options.raw !== undefined;\n }\n function validateRequiredCldr(path, value) {\n validateCldr(path, value, {\n skip: [/dates\\/calendars\\/gregorian\\/dateTimeFormats\\/availableFormats/, /dates\\/calendars\\/gregorian\\/days\\/.*\\/short/, /dates\\/timeZoneNames\\/zone/, /dates\\/timeZoneNames\\/metazone/, /globalize-iana/, /supplemental\\/metaZones/, /supplemental\\/timeData\\/(?!001)/, /supplemental\\/weekData\\/(?!001)/]\n });\n }\n function validateOptionsPreset(options) {\n validateOptionsPresetEach(\"date\", options);\n validateOptionsPresetEach(\"time\", options);\n validateOptionsPresetEach(\"datetime\", options);\n }\n function validateOptionsPresetEach(type, options) {\n var value = options[type];\n validate(\"E_INVALID_OPTIONS\", 'Invalid `{{type}: \"{value}\"}`.', value === undefined || [\"short\", \"medium\", \"long\", \"full\"].indexOf(value) !== -1, {\n type: type,\n value: value\n });\n }\n function validateOptionsSkeleton(pattern, skeleton) {\n validate(\"E_INVALID_OPTIONS\", 'Invalid `{skeleton: \"{value}\"}` based on provided CLDR.', skeleton === undefined || typeof pattern === \"string\" && pattern, {\n type: \"skeleton\",\n value: skeleton\n });\n }\n function validateRequiredIana(timeZone) {\n return function (path, value) {\n if (!/globalize-iana/.test(path)) {\n return;\n }\n validate(\"E_MISSING_IANA_TZ\", \"Missing required IANA timezone content for `{timeZone}`: `{path}`.\", value, {\n path: path.replace(/globalize-iana\\//, \"\"),\n timeZone: timeZone\n });\n };\n }\n\n /**\n * .loadTimeZone( json )\n *\n * @json [JSON]\n *\n * Load IANA timezone data.\n */\n Globalize.loadTimeZone = function (json) {\n var customData = {\n \"globalize-iana\": json\n };\n validateParameterPresence(json, \"json\");\n validateParameterTypePlainObject(json, \"json\");\n Cldr.load(customData);\n };\n\n /**\n * .dateFormatter( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a date formatter function (of the form below) according to the given options and the\n * default/instance locale.\n *\n * fn( value )\n *\n * @value [Date]\n *\n * Return a function that formats a date according to the given `format` and the default/instance\n * locale.\n */\n Globalize.dateFormatter = Globalize.prototype.dateFormatter = function (options) {\n var args, dateToPartsFormatter, returnFn;\n validateParameterTypePlainObject(options, \"options\");\n options = options || {};\n if (!optionsHasStyle(options)) {\n options.skeleton = \"yMd\";\n }\n args = [options];\n dateToPartsFormatter = this.dateToPartsFormatter(options);\n returnFn = dateFormatterFn(dateToPartsFormatter);\n runtimeBind(args, this.cldr, returnFn, [dateToPartsFormatter]);\n return returnFn;\n };\n\n /**\n * .dateToPartsFormatter( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a date formatter function (of the form below) according to the given options and the\n * default/instance locale.\n *\n * fn( value )\n *\n * @value [Date]\n *\n * Return a function that formats a date to parts according to the given `format`\n * and the default/instance\n * locale.\n */\n Globalize.dateToPartsFormatter = Globalize.prototype.dateToPartsFormatter = function (options) {\n var args, cldr, numberFormatters, pad, pattern, properties, returnFn, timeZone, ianaListener;\n validateParameterTypePlainObject(options, \"options\");\n cldr = this.cldr;\n options = options || {};\n if (!optionsHasStyle(options)) {\n options.skeleton = \"yMd\";\n }\n validateOptionsPreset(options);\n validateDefaultLocale(cldr);\n timeZone = options.timeZone;\n validateParameterTypeString(timeZone, \"options.timeZone\");\n args = [options];\n cldr.on(\"get\", validateRequiredCldr);\n if (timeZone) {\n ianaListener = validateRequiredIana(timeZone);\n cldr.on(\"get\", ianaListener);\n }\n try {\n pattern = dateExpandPattern(options, cldr);\n validateOptionsSkeleton(pattern, options.skeleton);\n properties = dateFormatProperties(pattern, cldr, timeZone);\n } finally {\n cldr.off(\"get\", validateRequiredCldr);\n if (ianaListener) {\n cldr.off(\"get\", ianaListener);\n }\n }\n\n // Create needed number formatters.\n numberFormatters = properties.numberFormatters;\n delete properties.numberFormatters;\n for (pad in numberFormatters) {\n numberFormatters[pad] = this.numberFormatter({\n raw: numberFormatters[pad]\n });\n }\n returnFn = dateToPartsFormatterFn(numberFormatters, properties);\n runtimeBind(args, cldr, returnFn, [numberFormatters, properties]);\n return returnFn;\n };\n\n /**\n * .dateParser( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a function that parses a string date according to the given `formats` and the\n * default/instance locale.\n */\n Globalize.dateParser = Globalize.prototype.dateParser = function (options) {\n var args, cldr, numberParser, parseProperties, pattern, returnFn, timeZone, tokenizerProperties;\n validateParameterTypePlainObject(options, \"options\");\n cldr = this.cldr;\n options = options || {};\n if (!optionsHasStyle(options)) {\n options.skeleton = \"yMd\";\n }\n validateOptionsPreset(options);\n validateDefaultLocale(cldr);\n timeZone = options.timeZone;\n validateParameterTypeString(timeZone, \"options.timeZone\");\n args = [options];\n try {\n cldr.on(\"get\", validateRequiredCldr);\n if (timeZone) {\n cldr.on(\"get\", validateRequiredIana(timeZone));\n }\n pattern = dateExpandPattern(options, cldr);\n validateOptionsSkeleton(pattern, options.skeleton);\n tokenizerProperties = dateTokenizerProperties(pattern, cldr, timeZone);\n parseProperties = dateParseProperties(cldr, timeZone);\n } finally {\n cldr.off(\"get\", validateRequiredCldr);\n if (timeZone) {\n cldr.off(\"get\", validateRequiredIana(timeZone));\n }\n }\n numberParser = this.numberParser({\n raw: \"0\"\n });\n returnFn = dateParserFn(numberParser, parseProperties, tokenizerProperties);\n runtimeBind(args, cldr, returnFn, [numberParser, parseProperties, tokenizerProperties]);\n return returnFn;\n };\n\n /**\n * .formatDate( value, options )\n *\n * @value [Date]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Formats a date or number according to the given options string and the default/instance locale.\n */\n Globalize.formatDate = Globalize.prototype.formatDate = function (value, options) {\n validateParameterPresence(value, \"value\");\n validateParameterTypeDate(value, \"value\");\n return this.dateFormatter(options)(value);\n };\n\n /**\n * .formatDateToParts( value, options )\n *\n * @value [Date]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Formats a date or number to parts according to the given options and the default/instance locale.\n */\n Globalize.formatDateToParts = Globalize.prototype.formatDateToParts = function (value, options) {\n validateParameterPresence(value, \"value\");\n validateParameterTypeDate(value, \"value\");\n return this.dateToPartsFormatter(options)(value);\n };\n\n /**\n * .parseDate( value, options )\n *\n * @value [String]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a Date instance or null.\n */\n Globalize.parseDate = Globalize.prototype.parseDate = function (value, options) {\n validateParameterPresence(value, \"value\");\n validateParameterTypeString(value, \"value\");\n return this.dateParser(options)(value);\n };\n return Globalize;\n});\n","'use strict';\n\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // Node, CommonJS\n module.exports = factory(require(\"cldrjs\"), require(\"globalize\"), require(\"make-plural\"));\n } else {\n // Extend global\n factory(root.Cldr, root.Globalize);\n }\n})(undefined, function (Cldr, Globalize) {\n var formatMessage = Globalize._formatMessage,\n runtimeBind = Globalize._runtimeBind,\n validateCldr = Globalize._validateCldr,\n validateDefaultLocale = Globalize._validateDefaultLocale,\n validateParameterPresence = Globalize._validateParameterPresence,\n validateParameterTypeString = Globalize._validateParameterTypeString,\n validateParameterTypeNumber = Globalize._validateParameterTypeNumber;\n const Cardinals = require(\"make-plural/cardinals\");\n var relativeTimeFormat = function (value, numberFormatter, properties, cldr) {\n var relativeTime,\n message = properties[\"relative-type-\" + value];\n if (message) {\n return message;\n }\n relativeTime = value <= 0 ? properties[\"relativeTime-type-past\"] : properties[\"relativeTime-type-future\"];\n value = Math.abs(value);\n const locale = cldr.locale.replace(/-.*/, \"\");\n const val = Cardinals[locale](value);\n message = relativeTime[\"relativeTimePattern-count-\" + val];\n return formatMessage(message, [numberFormatter(value)]);\n };\n var relativeTimeFormatterFn = function (numberFormatter, properties, cldr) {\n return function relativeTimeFormatter(value) {\n validateParameterPresence(value, \"value\");\n validateParameterTypeNumber(value, \"value\");\n return relativeTimeFormat(value, numberFormatter, properties, cldr);\n };\n };\n var relativeTimeProperties = function (unit, cldr, options) {\n var form = options.form,\n raw,\n properties,\n key,\n match;\n if (form) {\n unit = unit + \"-\" + form;\n }\n raw = cldr.main([\"dates\", \"fields\", unit]);\n properties = {\n \"relativeTime-type-future\": raw[\"relativeTime-type-future\"],\n \"relativeTime-type-past\": raw[\"relativeTime-type-past\"]\n };\n for (key in raw) {\n if (Object.prototype.hasOwnProperty.call(raw, key)) {\n match = /relative-type-(-?[0-9]+)/.exec(key);\n if (match) {\n properties[key] = raw[key];\n }\n }\n }\n return properties;\n };\n Globalize.formatRelativeTime = Globalize.prototype.formatRelativeTime = function (value, unit, options) {\n validateParameterPresence(value, \"value\");\n validateParameterTypeNumber(value, \"value\");\n return this.relativeTimeFormatter(unit, options)(value);\n };\n Globalize.relativeTimeFormatter = Globalize.prototype.relativeTimeFormatter = function (unit, options) {\n var args, cldr, numberFormatter, properties, returnFn;\n validateParameterPresence(unit, \"unit\");\n validateParameterTypeString(unit, \"unit\");\n cldr = this.cldr;\n options = options || {};\n args = [unit, options];\n validateDefaultLocale(cldr);\n cldr.on(\"get\", validateCldr);\n try {\n properties = relativeTimeProperties(unit, cldr, options);\n } finally {\n cldr.off(\"get\", validateCldr);\n }\n numberFormatter = this.numberFormatter(options);\n returnFn = relativeTimeFormatterFn(numberFormatter, properties, cldr);\n runtimeBind(args, cldr, returnFn, [numberFormatter, properties]);\n return returnFn;\n };\n return Globalize;\n});\n","'use strict';\n\n/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function (root, factory) {\n if (typeof exports === \"object\") {\n // Node, CommonJS\n module.exports = factory(require(\"cldrjs\"), require(\"globalize\"));\n } else {\n // Extend global\n factory(root.Cldr, root.Globalize);\n }\n})(undefined, function (Cldr, Globalize) {\n var formatMessage = Globalize._formatMessage,\n runtimeBind = Globalize._runtimeBind,\n validateParameterPresence = Globalize._validateParameterPresence,\n validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject,\n validateParameterTypeNumber = Globalize._validateParameterTypeNumber,\n validateParameterTypeString = Globalize._validateParameterTypeString;\n const Cardinals = require(\"make-plural/cardinals\");\n\n /**\n * format( value, numberFormatter, pluralGenerator, unitProperies )\n *\n * @value [Number]\n *\n * @numberFormatter [Object]: A numberFormatter from Globalize.numberFormatter.\n *\n * @pluralGenerator [Object]: A pluralGenerator from Globalize.pluralGenerator.\n *\n * @unitProperies [Object]: localized unit data from cldr.\n *\n * Format units such as seconds, minutes, days, weeks, etc.\n *\n * OBS:\n *\n * Unit Sequences are not implemented.\n * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#Unit_Sequences\n *\n * Duration Unit (for composed time unit durations) is not implemented.\n * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#durationUnit\n */\n var unitFormat = function (value, numberFormatter, unitProperties, cldr) {\n var compoundUnitPattern = unitProperties.compoundUnitPattern,\n dividend,\n dividendProperties,\n formattedValue,\n divisor,\n divisorProperties,\n message,\n unitPlural,\n oneProperty;\n unitProperties = unitProperties.unitProperties;\n formattedValue = numberFormatter(value);\n const locale = cldr.locale.replace(/-.*/, \"\");\n unitPlural = Cardinals[locale](value);\n\n // computed compound unit, eg. \"megabyte-per-second\".\n if (unitProperties instanceof Array) {\n dividendProperties = unitProperties[0];\n divisorProperties = unitProperties[1];\n oneProperty = Object.prototype.hasOwnProperty.call(divisor, \"one\") ? \"one\" : \"other\";\n dividend = formatMessage(dividendProperties[unitPlural], [formattedValue]);\n divisor = formatMessage(divisorProperties[oneProperty], [\"\"]).trim();\n return formatMessage(compoundUnitPattern, [dividend, divisor]);\n }\n message = unitProperties[unitPlural];\n return formatMessage(message, [formattedValue]);\n };\n var unitFormatterFn = function (numberFormatter, unitProperties, cldr) {\n return function unitFormatter(value) {\n validateParameterPresence(value, \"value\");\n validateParameterTypeNumber(value, \"value\");\n return unitFormat(value, numberFormatter, unitProperties, cldr);\n };\n };\n\n /**\n * categories()\n *\n * Return all unit categories.\n */\n var unitCategories = [\"acceleration\", \"angle\", \"area\", \"digital\", \"duration\", \"length\", \"mass\", \"power\", \"pressure\", \"speed\", \"temperature\", \"volume\"];\n function stripPluralGarbage(data) {\n var aux, pluralCount;\n if (data) {\n aux = {};\n for (pluralCount in data) {\n aux[pluralCount.replace(/unitPattern-count-/, \"\")] = data[pluralCount];\n }\n }\n return aux;\n }\n\n /**\n * get( unit, form, cldr )\n *\n * @unit [String] The full type-unit name (eg. duration-second), or the short unit name\n * (eg. second).\n *\n * @form [String] A string describing the form of the unit representation (eg. long,\n * short, narrow).\n *\n * @cldr [Cldr instance].\n *\n * Return the plural map of a unit, eg: \"second\"\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" }\n * }\n *\n * Or the Array of plural maps of a compound-unit, eg: \"foot-per-second\"\n * [ { \"one\": \"{0} foot\",\n * \"other\": \"{0} feet\" },\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" } ]\n *\n * Uses the precomputed form of a compound-unit if available, eg: \"mile-per-hour\"\n * { \"displayName\": \"miles per hour\",\n * \"unitPattern-count-one\": \"{0} mile per hour\",\n * \"unitPattern-count-other\": \"{0} miles per hour\"\n * },\n *\n * Also supports \"/\" instead of \"-per-\", eg. \"foot/second\", using the precomputed form if\n * available.\n *\n * Or the Array of plural maps of a compound-unit, eg: \"foot-per-second\"\n * [ { \"one\": \"{0} foot\",\n * \"other\": \"{0} feet\" },\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" } ]\n *\n * Or undefined in case the unit (or a unit of the compound-unit) doesn't exist.\n */\n var get = function (unit, form, cldr) {\n var ret;\n\n // Ensure that we get the 'precomputed' form, if present.\n unit = unit.replace(/\\//, \"-per-\");\n\n // Get unit or -unit (eg. \"duration-second\").\n [\"\"].concat(unitCategories).some(function (category) {\n return ret = cldr.main([\"units\", form, category.length ? category + \"-\" + unit : unit]);\n });\n\n // Rename keys s/unitPattern-count-//g.\n ret = stripPluralGarbage(ret);\n\n // Compound Unit, eg. \"foot-per-second\" or \"foot/second\".\n if (!ret && /-per-/.test(unit)) {\n // \"Some units already have 'precomputed' forms, such as kilometer-per-hour;\n // where such units exist, they should be used in preference\" UTS#35.\n // Note that precomputed form has already been handled above (!ret).\n\n // Get both recursively.\n unit = unit.split(\"-per-\");\n ret = unit.map(function (unit) {\n return get(unit, form, cldr);\n });\n if (!ret[0] || !ret[1]) {\n return;\n }\n }\n return ret;\n };\n var unitGet = get;\n\n /**\n * properties( unit, form, cldr )\n *\n * @unit [String] The full type-unit name (eg. duration-second), or the short unit name\n * (eg. second).\n *\n * @form [String] A string describing the form of the unit representation (eg. long,\n * short, narrow).\n *\n * @cldr [Cldr instance].\n */\n var unitProperties = function (unit, form, cldr) {\n var compoundUnitPattern, unitProperties;\n compoundUnitPattern = cldr.main([\"units\", form, \"per/compoundUnitPattern\"]);\n unitProperties = unitGet(unit, form, cldr);\n return {\n compoundUnitPattern: compoundUnitPattern,\n unitProperties: unitProperties\n };\n };\n\n /**\n * Globalize.formatUnit( value, unit, options )\n *\n * @value [Number]\n *\n * @unit [String]: The unit (e.g \"second\", \"day\", \"year\")\n *\n * @options [Object]\n * - form: [String] \"long\", \"short\" (default), or \"narrow\".\n *\n * Format units such as seconds, minutes, days, weeks, etc.\n */\n Globalize.formatUnit = Globalize.prototype.formatUnit = function (value, unit, options) {\n validateParameterPresence(value, \"value\");\n validateParameterTypeNumber(value, \"value\");\n return this.unitFormatter(unit, options)(value);\n };\n\n /**\n * Globalize.unitFormatter( unit, options )\n *\n * @unit [String]: The unit (e.g \"second\", \"day\", \"year\")\n *\n * @options [Object]\n * - form: [String] \"long\", \"short\" (default), or \"narrow\".\n *\n * - numberFormatter: [Function] a number formatter function. Defaults to Globalize\n * `.numberFormatter()` for the current locale using the default options.\n */\n Globalize.unitFormatter = Globalize.prototype.unitFormatter = function (unit, options) {\n var args, form, numberFormatter, returnFn, properties;\n validateParameterPresence(unit, \"unit\");\n validateParameterTypeString(unit, \"unit\");\n validateParameterTypePlainObject(options, \"options\");\n options = options || {};\n args = [unit, options];\n form = options.form || \"long\";\n properties = unitProperties(unit, form, this.cldr);\n numberFormatter = options.numberFormatter || this.numberFormatter();\n returnFn = unitFormatterFn(numberFormatter, properties, this.cldr);\n runtimeBind(args, this.cldr, returnFn, [numberFormatter, properties]);\n return returnFn;\n };\n return Globalize;\n});\n","import 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.join';\nimport 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.array.slice';\nimport 'core-js/modules/es.array.splice';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.object.values';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.split';\nimport { isWorldReadyInstance } from '@paypalcorp/worldready-core';\nimport { assert, assertType, assertRange } from 'yaassertion';\nimport { NumberFormat } from '@paypalcorp/worldready-number';\nimport 'globalize/dist/globalize/number';\nimport 'globalize/dist/globalize/currency';\nimport 'globalize/dist/globalize/plural';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nvar _excluded = [\"style\", \"currency\"];\nvar getMissingMetadataError = function getMissingMetadataError(path) {\n var message = \"Missing WorldReady metadata, please refer to https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about-load-worldready-data.html\";\n if (path) {\n message += \"\\nPath: \" + path;\n }\n return new Error(message);\n};\nfunction globalizeToWorldReadyError(error) {\n if (error.code === \"E_MISSING_CLDR\") {\n return getMissingMetadataError(error.stack);\n }\n return new Error([\"Oops, internal error\", error.message, error.stack].join(\"\\n\"));\n}\nfunction validateCldr(path, value, options) {\n if (options === void 0) {\n options = {\n skip: []\n };\n }\n var skipBoolean = options.skip.some(function (regex) {\n return regex.test(path);\n });\n if (skipBoolean) {\n return;\n }\n if (value === undefined) {\n throw getMissingMetadataError(path);\n }\n}\n\n/**\n * Note:\n * - Below, we \"borrow code\" from globalize since it doesn't export the resolved properties.\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/number.js\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/number/pattern-properties.js\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/number/format-properties.js\n * - NOT using numberFormatter.runtimeArgs because it's NOT available when code is minified.\n *\n * TODO: Expose resolvedOptions() in globalize and reuse it here.\n */\n\nfunction numberNumberingSystem(cldr) {\n var nu = cldr.attributes[\"u-nu\"];\n if (nu) {\n if (nu === \"traditio\") {\n nu = \"traditional\";\n }\n if ([\"native\", \"traditional\", \"finance\"].indexOf(nu) !== -1) {\n // Unicode locale extension `u-nu` is set using either (native, traditional or\n // finance). So, lookup the respective locale's numberingSystem and return it.\n return cldr.main([\"numbers/otherNumberingSystems\", nu]);\n }\n\n // Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it.\n return nu;\n }\n\n // Return the default numberingSystem.\n return cldr.main(\"numbers/defaultNumberingSystem\");\n}\nfunction numberPattern(style, cldr) {\n if (style !== \"decimal\" && style !== \"percent\") {\n throw new Error(\"Invalid style\");\n }\n return cldr.main([\"numbers\", style + \"Formats-numberSystem-\" + numberNumberingSystem(cldr), \"standard\"]);\n}\n\n/**\n * Note:\n * - Below, we \"borrow code\" from globalize since it doesn't export the resolved properties.\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/currency.js\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/number/pattern-properties.js\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/number/format-properties.js\n * - NOT using numberFormatter.runtimeArgs because it's NOT available when code is minified.\n *\n * TODO: Expose resolvedOptions() in globalize and reuse it here.\n */\n\n// eslint-disable-next-line\nvar regexpNotS = /[\\0-#%-\\*,-;\\?-\\]_a-\\{\\}\\x7F-\\xA1\\xA7\\xAA\\xAB\\xAD\\xB2\\xB3\\xB5-\\xB7\\xB9-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376-\\u0383\\u0386-\\u03F5\\u03F7-\\u0481\\u0483-\\u058C\\u0590-\\u0605\\u0609\\u060A\\u060C\\u060D\\u0610-\\u06DD\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF-\\u07F5\\u07F7-\\u09F1\\u09F4-\\u09F9\\u09FC-\\u0AF0\\u0AF2-\\u0B6F\\u0B71-\\u0BF2\\u0BFB-\\u0C7E\\u0C80-\\u0D78\\u0D7A-\\u0E3E\\u0E40-\\u0F00\\u0F04-\\u0F12\\u0F14\\u0F18\\u0F19\\u0F20-\\u0F33\\u0F35\\u0F37\\u0F39-\\u0FBD\\u0FC6\\u0FCD\\u0FD0-\\u0FD4\\u0FD9-\\u109D\\u10A0-\\u138F\\u139A-\\u17DA\\u17DC-\\u193F\\u1941-\\u19DD\\u1A00-\\u1B60\\u1B6B-\\u1B73\\u1B7D-\\u1FBC\\u1FBE\\u1FC2-\\u1FCC\\u1FD0-\\u1FDC\\u1FE0-\\u1FEC\\u1FF0-\\u1FFC\\u1FFF-\\u2043\\u2045-\\u2051\\u2053-\\u2079\\u207D-\\u2089\\u208D-\\u209F\\u20BE-\\u20FF\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u218F\\u2308-\\u230B\\u2329\\u232A\\u23FB-\\u23FF\\u2427-\\u243F\\u244B-\\u249B\\u24EA-\\u24FF\\u2768-\\u2793\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2B74\\u2B75\\u2B96\\u2B97\\u2BBA-\\u2BBC\\u2BC9\\u2BD2-\\u2CE4\\u2CEB-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u3003\\u3005-\\u3011\\u3014-\\u301F\\u3021-\\u3035\\u3038-\\u303D\\u3040-\\u309A\\u309D-\\u318F\\u3192-\\u3195\\u31A0-\\u31BF\\u31E4-\\u31FF\\u321F-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u32FF\\u3400-\\u4DBF\\u4E00-\\uA48F\\uA4C7-\\uA6FF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA827\\uA82C-\\uA835\\uA83A-\\uAA76\\uAA7A-\\uAB5A\\uAB5C-\\uD7FF\\uDC00-\\uFB28\\uFB2A-\\uFBB1\\uFBC2-\\uFDFB\\uFDFE-\\uFE61\\uFE63\\uFE67\\uFE68\\uFE6A-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF1B\\uFF1F-\\uFF3D\\uFF3F\\uFF41-\\uFF5B\\uFF5D\\uFF5F-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF]|\\uD800[\\uDC00-\\uDD36\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDD8D-\\uDD8F\\uDD9C-\\uDD9F\\uDDA1-\\uDDCF\\uDDFD-\\uDFFF]|[\\uD801\\uD803-\\uD819\\uD81B-\\uD82E\\uD830-\\uD833\\uD836-\\uD83A\\uD83F-\\uDBFF][\\uDC00-\\uDFFF]|\\uD802[\\uDC00-\\uDC76\\uDC79-\\uDEC7\\uDEC9-\\uDFFF]|\\uD81A[\\uDC00-\\uDF3B\\uDF40-\\uDF44\\uDF46-\\uDFFF]|\\uD82F[\\uDC00-\\uDC9B\\uDC9D-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD65-\\uDD69\\uDD6D-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDDDE-\\uDDFF\\uDE42-\\uDE44\\uDE46-\\uDEFF\\uDF57-\\uDFFF]|\\uD835[\\uDC00-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFFF]|\\uD83B[\\uDC00-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDD0F\\uDD2F\\uDD6C-\\uDD6F\\uDD9B-\\uDDE5\\uDE03-\\uDE0F\\uDE3B-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDEFF\\uDF2D-\\uDF2F\\uDF7E\\uDF7F\\uDFCF-\\uDFD3\\uDFF8-\\uDFFF]|\\uD83D[\\uDCFF\\uDD4B-\\uDD4F\\uDD7A\\uDDA4\\uDE43\\uDE44\\uDED0-\\uDEDF\\uDEED-\\uDEEF\\uDEF4-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDFFF]|[\\uD800-\\uDBFF]/;\nfunction stringPad(str, count, right) {\n var length;\n if (typeof str !== \"string\") {\n str = String(str);\n }\n for (length = str.length; length < count; length += 1) {\n str = right ? str + \"0\" : \"0\" + str;\n }\n return str;\n}\nfunction currencySupplementalOverride(currency, pattern, cldr) {\n var digits,\n fraction = \"\",\n fractionData = cldr.supplemental([\"currencyData/fractions\", currency]) || cldr.supplemental(\"currencyData/fractions/DEFAULT\");\n digits = +fractionData._digits;\n if (digits) {\n fraction = \".\" + stringPad(\"0\", digits).slice(0, -1) + fractionData._rounding;\n }\n return pattern.replace(/\\.(#+|0*[0-9]|0+[0-9]?)/g, fraction);\n}\nfunction currencyNameProperties(currency, cldr) {\n var pattern = numberPattern(\"decimal\", cldr);\n\n // The number of decimal places and the rounding for each currency is not locale-specific. Those\n // values overridden by Supplemental Currency Data.\n pattern = currencySupplementalOverride(currency, pattern, cldr);\n return {\n pattern: pattern\n };\n}\nfunction currencySymbolProperties(currency, cldr, options) {\n var currencySpacing,\n pattern,\n symbol,\n symbolEntries,\n regexp = {\n \"[:digit:]\": /\\d/,\n \"[:^S:]\": regexpNotS\n };\n if (options.style === \"code\") {\n symbol = currency;\n } else {\n symbolEntries = [\"symbol\"];\n\n // If options.symbolForm === \"narrow\" was passed, prepend it.\n if (options.symbolForm === \"narrow\") {\n symbolEntries.unshift(\"symbol-alt-narrow\");\n }\n symbolEntries.some(function (symbolEntry) {\n return symbol = cldr.main([\"numbers/currencies\", currency, symbolEntry]);\n });\n }\n currencySpacing = [\"beforeCurrency\", \"afterCurrency\"].map(function (position) {\n return cldr.main([\"numbers\", \"currencyFormats-numberSystem-\" + numberNumberingSystem(cldr), \"currencySpacing\", position]);\n });\n pattern = cldr.main([\"numbers\", \"currencyFormats-numberSystem-\" + numberNumberingSystem(cldr), options.style === \"accounting\" ? \"accounting\" : \"standard\"]);\n pattern =\n // The number of decimal places and the rounding for each currency is not locale-specific.\n // Those values are overridden by Supplemental Currency Data.\n currencySupplementalOverride(currency, pattern, cldr)\n // Replace \"¤\" (\\u00A4) with the appropriate symbol literal.\n .split(\";\").map(function (pattern) {\n return pattern.split(\"\\xA4\").map(function (part, i) {\n var currencyMatch = regexp[currencySpacing[i].currencyMatch],\n surroundingMatch = regexp[currencySpacing[i].surroundingMatch],\n insertBetween = \"\";\n\n // For currencyMatch and surroundingMatch definitions, read [1].\n // When i === 0, beforeCurrency is being handled. Otherwise, afterCurrency.\n // 1: http://www.unicode.org/reports/tr35/tr35-numbers.html#Currencies\n currencyMatch = currencyMatch.test(symbol.charAt(i ? symbol.length - 1 : 0));\n surroundingMatch = surroundingMatch.test(part.charAt(i ? 0 : part.length - 1).replace(/[#@,.]/g, \"0\"));\n if (currencyMatch && part && surroundingMatch) {\n insertBetween = currencySpacing[i].insertBetween;\n }\n return (i ? insertBetween : \"\") + part + (i ? \"\" : insertBetween);\n }).join(\"\\xA4\");\n }).join(\";\");\n return {\n pattern: pattern\n };\n}\nfunction resolvedOptions(globalize, currency, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n style = _options.style;\n var _accounting$code$name = {\n accounting: currencySymbolProperties,\n code: currencySymbolProperties,\n name: currencyNameProperties,\n symbol: currencySymbolProperties,\n international: currencySymbolProperties\n }[style](currency, globalize.cldr, options),\n raw = _accounting$code$name.pattern;\n return NumberFormat._resolvedOptions(globalize, {\n raw: raw\n });\n}\nvar ENVIRONMENT = {\n PRODUCTION: \"production\"\n};\nvar CURRENCY_STYLES = {\n SYMBOL: \"symbol\",\n CODE: \"code\",\n INTERNATIONAL: \"international\"\n};\n\n/***\n * Code imported from Griffin v2 to deal with PayPal-cystom-international pattern.\n * @input it takes 2 strings valueA and valueB\n * @returns {number} the percentage of how similar are both\n */\nfunction fuzzyMatch(svalueA, svalueB) {\n if (svalueA === svalueB) {\n return 100;\n } else {\n var valueA = svalueA.split(\"\"),\n valueB = svalueB.split(\"\"),\n equivalency = 0;\n for (var i = 0; i < valueA.length; i++) {\n if (valueB.indexOf(valueA[i]) !== -1) {\n var position = valueB.indexOf(valueA[i]);\n valueB.splice(position, 1);\n equivalency++;\n }\n }\n var weight = equivalency / valueA.length;\n return weight * 100;\n }\n}\nvar CurrencyFormat = /*#__PURE__*/function () {\n function CurrencyFormat(worldReady, options) {\n // Error Check: WorldReady Object\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assert(isWorldReadyInstance(worldReady), \"WorldReady object missing.\");\n assertType(options, \"options\", [\"undefined\", \"plain object\"]);\n }\n var _ref = options || {},\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? CURRENCY_STYLES.SYMBOL : _ref$style,\n currency = _ref.currency,\n otherOptions = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n assertType(currency, \"options.currency\", [\"string\"]);\n assertType(style, \"options.style\", [\"string\"]);\n assertRange(style, [\"symbol\", \"code\", \"name\", \"international\"], \"options.style must be one of \" + Object.values(CURRENCY_STYLES).join(\", \"));\n }\n currency = currency.toUpperCase();\n this._runtimeOptions = Object.assign({\n currency: currency,\n style: style\n }, otherOptions);\n this.currencyMetadata = null;\n var cldr = worldReady.globalize.cldr;\n cldr.on(\"main\", validateCldr);\n try {\n this.currencyMetadata = cldr.main(\"numbers/currencies/\" + currency);\n } catch (error) {\n globalizeToWorldReadyError(error);\n }\n\n // Support PayPal custom international format by hacking Globalize and overwrite the symbol --- START\n // pattern with the PayPal-custom-international pattern.\n // This hack is possible because JavaScript is single threaded and there's no race condition.\n // The below synchronous code will finish execution before any other async queued event run.\n var aux;\n if (style === CURRENCY_STYLES.INTERNATIONAL) {\n var _cldr = worldReady.globalize.cldr;\n var data = _cldr.main(\"numbers/currencyFormats-numberSystem-latn\");\n aux = [data, CURRENCY_STYLES.INTERNATIONAL, data.standard];\n\n // Use PayPal-international currency override (e.g., TRY) or default PayPal-international.\n var pattern = _cldr.main([\"numbers/currencyFormats-numberSystem-latn/currency_override\", currency, CURRENCY_STYLES.INTERNATIONAL]) || _cldr.main(\"numbers/currencyFormats-numberSystem-latn/international\");\n\n // Avoid showing ISO code when it's too similar to symbol,\n // e.g., MXN and $MX.\n // PS: Also ignore spaces when checking similarity to avoid cases like: fr-BW: \"1 234,50 $ US USD\"\n if (/¤/.test(pattern)) {\n var symbolWithoutSpaces = (_cldr.main([\"numbers/currencies\", currency, \"symbol-alt-narrow\"]) || _cldr.main([\"numbers/currencies\", currency, \"symbol\"]) || \"\").replace(/\\s/g, \"\");\n if (fuzzyMatch(currency, symbolWithoutSpaces) >= 66) {\n pattern = pattern.replace(/\\s*C/g, \"\");\n }\n }\n data.standard = pattern;\n style = CURRENCY_STYLES.SYMBOL;\n\n // use symbolForm narrow in order to show es-MX: $1,234.50 USD instead of USD 1,234.50 USD\n //symbolForm = \"narrow\";\n otherOptions.symbolForm = \"narrow\";\n }\n try {\n this.currencyToPartsFormatter = worldReady.globalize.currencyToPartsFormatter(currency, Object.assign({\n style: style\n }, otherOptions));\n } catch (error) {\n throw globalizeToWorldReadyError(error);\n }\n\n // Support PayPal custom international format --- END\n if (aux) {\n var _aux = aux,\n _data = _aux[0];\n var _aux2 = aux;\n style = _aux2[1];\n _data.standard = _aux2[2];\n }\n this.currency = currency;\n this.style = style;\n var resolvedOptionsCache;\n this._resolvedOptions = function () {\n if (!resolvedOptionsCache) {\n resolvedOptionsCache = resolvedOptions(worldReady.globalize, currency, Object.assign({\n style: style\n }, otherOptions));\n }\n return resolvedOptionsCache;\n };\n if (process.env.NODE_ENV !== ENVIRONMENT.PRODUCTION) {\n // Save data so it can be used at runtime\n this._runtimeArgs = [options];\n this._runtimeValue = this._resolvedOptions();\n }\n }\n var _proto = CurrencyFormat.prototype;\n _proto.format = function format(value) {\n return this.formatToParts(value).map(function (part) {\n return part.value;\n }).join(\"\");\n };\n _proto.formatToParts = function formatToParts(value) {\n var parts = this.currencyToPartsFormatter(value);\n\n // Support PayPal custom formats that may include the currency ISO code regardless of the chosen\n // style. The following code hacks globalize currency formatter internals by replacing\n // \"C\"-PayPal-custom-pattern from the PayPal-overriden-metadata with the currency ISO code.\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n if (part.type === \"literal\" && part.value.indexOf(\"C\") !== -1) {\n var _part$value$split = part.value.split(/C/),\n preLiteral = _part$value$split[0],\n postLiteral = _part$value$split[1];\n parts.splice.apply(parts, [i, 1].concat([].concat(preLiteral ? [{\n type: \"literal\",\n value: preLiteral\n }] : [], [{\n type: this.style === CURRENCY_STYLES.SYMBOL ? \"currencySymbol\" : \"currencyCode\",\n value: this.currency\n }], postLiteral ? [{\n type: \"literal\",\n value: postLiteral\n }] : [])));\n }\n // Rename type from \"currency\" to \"currencySymbol\"\n if (part.type === \"currency\") {\n if (this.currencyMetadata[\"symbol-alt-narrow\"] && part.value === this.currencyMetadata[\"symbol-alt-narrow\"] || this.currencyMetadata.symbol && part.value === this.currencyMetadata.symbol) {\n part.type = \"currencySymbol\";\n parts.splice(i, 1, {\n type: \"currencySymbol\",\n value: part.value\n });\n }\n }\n\n // We want the type to be \"currencyCode\" for currencies (\"USD\", \"EUR\", etc.)\n if (part.type === \"currency\" && part.value === this.currency) {\n parts.splice(i, 1, {\n type: \"currencyCode\",\n value: this.currency\n });\n }\n }\n return parts;\n };\n _proto.resolvedOptions = function resolvedOptions() {\n return this._resolvedOptions();\n };\n return CurrencyFormat;\n}();\n\nexport { CurrencyFormat };\n","import 'core-js/modules/es.array.concat';\nimport 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.find-index';\nimport 'core-js/modules/es.array.includes';\nimport 'core-js/modules/es.array.join';\nimport 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.array.slice';\nimport 'core-js/modules/es.array.splice';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.includes';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.split';\nimport 'core-js/modules/web.dom-collections.for-each';\nimport { isWorldReadyInstance } from '@paypalcorp/worldready-core';\nimport { assert, assertType, assertRange } from 'yaassertion';\n\n/**\n * Format Message Parts.\n *\n * Given messageParts [1] and variables [2] below, returns [3].\n * 1: [{type: \"literal\", value: \"Hi, \"}, {type: \"variable\", value: \"name\"}]\n * 2: {name: \"John\"}, becomes\n * 3: [{type: \"literal\", value: \"Hi, \"}, {type: \"variable\", variableName: \"name\", value: \"John\"}]\n *\n * Given messageParts [1] and variables [2] below, returns [3].\n * 1:\n * [\n * { type: \"literal\", value: \"Transfer \" },\n * {\n * type: \"variable-block\",\n * value: \"bold\",\n * children: [{ type: \"literal\", value: \"money\" }]\n * }\n * ]\n * 2: {bold: innerParts => ${innerParts.map(part => part.value)}}, becomes\n * 3:\n * [\n * { type: \"literal\", value: \"Transfer \" },\n * {\n * type: \"variable-block\",\n * variableName: \"bold\",\n * value: innerParts => ${innerParts.map(part => part.value)},\n * children: [{ type: \"literal\", value: \"money\" }]\n * }\n * ]\n */\nfunction _formatToParts(messageParts, variables) {\n if (variables === void 0) {\n variables = {};\n }\n return messageParts.map(function (part) {\n var type = part.type,\n value = part.value,\n children = part.children;\n if (type === \"variable\") {\n return {\n type: type,\n value: variables[value],\n variableName: value\n };\n }\n if (type === \"variable-block\") {\n return {\n type: type,\n value: variables[value],\n children: _formatToParts(children, variables),\n variableName: value\n };\n }\n return part;\n });\n}\nfunction isPart(part) {\n var ret = true;\n var type = part.type,\n children = part.children;\n\n // If part has children, it's a part only if all children are also parts.\n if (children) {\n ret &= Array.isArray(children) && children.every(function (part) {\n return isPart(part);\n });\n }\n\n // Part must be an object that includes a string type and a value.\n ret &= typeof part === \"object\" && \"type\" in part && \"value\" in part && typeof type === \"string\";\n return ret;\n}\nfunction isMessage(node) {\n /**\n * If content is of form:\n * step[1]=\"step 1\"\n * step[2]=\"step 2\"\n * then message structure is [null, \"step 1\", \"step 2\"]\n * hence node can be null\n */\n if (!node || typeof node === \"string\" || typeof node === \"symbol\") {\n return true;\n }\n if (typeof node === \"object\" && \"_message\" in node && Array.isArray(node._message) && node._message.every(function (part) {\n return isPart(part);\n })) {\n return true;\n }\n return false;\n}\nvar DEPRECATED_MESSAGE_MISSING = \" \";\nvar MESSAGE_MISSING = \"\\uE007\\uE007\";\nvar WORLDREADY_EXPERIENCE_KEY_PREFIX = \"WORLDREADY\";\nfunction getWorldReadyExperienceId(market, id) {\n return [WORLDREADY_EXPERIENCE_KEY_PREFIX, market].concat(id);\n}\nfunction isMessageValueMissing(val) {\n // TODO: Remove DEPRECATED_MESSAGE_MISSING\n return val && (val === MESSAGE_MISSING || val === DEPRECATED_MESSAGE_MISSING);\n}\n\n// Internal imports.\nfunction flattenToNestedParts(flatenParts) {\n var nestedParts = [].concat(flatenParts);\n var message = flatenParts.map(function (_ref) {\n var type = _ref.type,\n value = _ref.value;\n if (type === \"variable-block-start\") {\n return \"{\" + value + \"}\";\n }\n if (type === \"variable-block-end\") {\n return \"{/\" + value + \"}\";\n }\n return value;\n }).join(\"\");\n var _loop = function _loop() {\n var _nestedParts$i = nestedParts[i],\n type = _nestedParts$i.type,\n value = _nestedParts$i.value;\n if (type === \"variable-block-start\") {\n var variableStartName = \"{\" + value + \"}\";\n var variableEndName = \"{/\" + value + \"}\";\n var endIndex = nestedParts.findIndex(function (_ref2) {\n var type = _ref2.type,\n thisValue = _ref2.value;\n return type === \"variable-block-end\" && value === thisValue;\n });\n if (process.env.NODE_ENV !== \"production\") {\n // TODO: fix assert to NOT replace {} from `message` string.\n assert(endIndex !== -1, 'Missing {variableEndName} variable \"end-tag\" in {{message}}', {\n variableEndName: variableEndName,\n // TODO: assert to support fn callback to get property value.\n // message: () => nestedParts.map(({value}) => value).join(\"\");\n message: message\n });\n }\n var newPart = {\n type: \"variable-block\",\n value: value\n };\n var subParts = nestedParts.splice(i, endIndex - i + 1, newPart).slice(1, -1);\n if (process.env.NODE_ENV !== \"production\") {\n assert(subParts.length, \"Missing content for {variableStartName}{variableEndName} variable pair\", {\n variableStartName: variableStartName,\n variableEndName: variableEndName\n });\n }\n newPart.children = flattenToNestedParts(subParts);\n }\n };\n for (var i = 0; i < nestedParts.length; i++) {\n _loop();\n }\n return nestedParts;\n}\n\n/**\n * Schema converter utility for client-side (browser):\n * - Needed by the inline source message feature;\n * - Only used on development;\n * - The difference between this one and schema-converter.server.js is that this\n * one is simpler and doesn't handle HTML in inline source messages;\n */\nvar variableRe = /{([A-Za-z_/][0-9a-zA-Z-_]*)}/g;\n\n/**\n * Following function breaks messages that contain variables and/or html markup into parts. For example:\n *\n * \"Hi, {name}\" becomes:\n * => [{type: \"literal\", value: \"Hi, \"}, {type: \"variable\", value: \"name\"}]\n *\n * \"Transfer {bold}money{/bold}\" becomes:\n * -> [ # before flattenToNestedParts()\n * [\n * { type: \"literal\", value: \"Transfer \" },\n * { type: \"variable-block-start\", value: \"bold\" },\n * { type: \"literal\", value: \"money\" },\n * { type: \"variable-block-end\", value: \"/bold\" }\n * ]\n * => [ # after flattenToNestedParts()\n * { type: \"literal\", value: \"Transfer \" },\n * {\n * type: \"variable-block\",\n * value: \"bold\",\n * children: [{ type: \"literal\", value: \"money\" }]\n * }\n * ]\n */\nfunction messageStringToWorldReadySchema(value) {\n // If no variables, keep the string itself instead of its parts\n if (!variableRe.test(value)) {\n return value;\n }\n var parts = [];\n var currPos = 0;\n value.replace(variableRe, function (match, variableName, matchPos) {\n // Push leading literal up to the variable match.\n parts.push({\n type: \"literal\",\n value: value.slice(currPos, matchPos)\n });\n\n // Push variable.\n parts.push({\n type: \"variable\",\n value: variableName\n });\n\n // Adjust currPos.\n currPos = matchPos + match.length;\n });\n parts.push({\n type: \"literal\",\n value: value.slice(currPos)\n });\n\n // Filter empty literals.\n parts = parts.filter(function (_ref3) {\n var type = _ref3.type,\n value = _ref3.value;\n return type !== \"literal\" || type === \"literal\" && value;\n });\n\n // Handle variable pairs.\n parts = parts.map(function (_ref4, i) {\n var type = _ref4.type,\n value = _ref4.value;\n if (type === \"variable\" && value[0] !== \"/\") {\n var variableEndName = \"/\" + value;\n var endIndex = parts.findIndex(\n // Renaming is required to prevent bugs in Jest env\n function (_ref5) {\n var thisValue = _ref5.value;\n return thisValue === variableEndName;\n });\n // Yes, it's a pair, adjust it like so.\n if (endIndex > i) {\n type = \"variable-block-start\";\n parts.splice(endIndex, 1, {\n type: \"variable-block-end\",\n value: value\n });\n }\n }\n return {\n type: type,\n value: value\n };\n });\n return {\n _message: flattenToNestedParts(parts)\n };\n}\n\n// Note: This is also used by inline source message\nfunction pseudoLocMessageParts(parts, init) {\n if (init === void 0) {\n init = true;\n }\n parts = parts.map(function (_ref6) {\n var type = _ref6.type,\n value = _ref6.value,\n children = _ref6.children;\n if (children) {\n children = pseudoLocMessageParts(children, false);\n return {\n children: children,\n type: type,\n value: value\n };\n }\n if (type === \"literal\") {\n value = pseudoLocString(value);\n }\n return {\n type: type,\n value: value\n };\n });\n if (init) {\n parts.unshift({\n type: \"literal\",\n value: pseudoLocHead()\n });\n parts.push({\n type: \"literal\",\n value: pseudoLocTail()\n });\n }\n return parts;\n}\nfunction pseudoLocHead() {\n return \"[[\";\n}\nvar pseudoLocVowels = {\n a: \"α\",\n e: \"ḛ\",\n i: \"ḭ\",\n o: \"ṓ\",\n u: \"ṵ\",\n A: \"À\",\n E: \"Ḛ\",\n I: \"Ḭ\",\n O: \"Ṏ\",\n U: \"Ṳ\"\n};\nfunction pseudoLocString(string) {\n return string.split(\"\").map(function (c) {\n return pseudoLocVowels[c] || c;\n }).join(\"\");\n}\nfunction pseudoLocTail() {\n return \"]]\";\n}\n\n/**\n * Returns region for based on locale and region value.\n * It will retun C2 if locale has CN-xbord\n * @param {string} locale\n * @param {string} region\n * @returns string - content region value\n */\nfunction getRegionForContent(locale, region) {\n return locale.includes(\"CN-xbord\") ? \"C2\" : region;\n}\nfunction assertMessageParts(messageParts, variables) {\n if (variables === void 0) {\n variables = {};\n }\n messageParts.forEach(function (_ref7) {\n var type = _ref7.type,\n value = _ref7.value,\n children = _ref7.children;\n if (type === \"variable\" || type === \"variable-block\") {\n assert(value in variables, \"Missing variable {{value}}\", {\n value: value\n });\n }\n if (type === \"variable-block\") {\n var variableName = value;\n var variableValue = variables[variableName];\n assert(typeof variableValue === \"function\" && variableValue.length === 1, \"Variable {{name}} expected to be a function that takes content as first argument, not {{value}}\", {\n name: variableName,\n value: variableValue\n });\n assertMessageParts(children, variables);\n }\n });\n}\nfunction getMessageParts(worldReady, id, source, fallback) {\n var market = getRegionForContent(worldReady.locale, worldReady.market);\n var cldr = worldReady.globalize.cldr;\n var message = cldr.main([\"marketSpecificL10n\", market].concat(getWorldReadyExperienceId(market, id))) || cldr.main([\"l10n\"].concat(getWorldReadyExperienceId(market, id))) || cldr.main([\"marketSpecificL10n\", market].concat(id)) || cldr.main([\"l10n\"].concat(id));\n if (process.env.NODE_ENV !== \"production\") {\n if (message) {\n assert(isMessage(message), \"Invalid `id` for MessageFormat object. Did you mean {{potentialId}}?\", {\n potentialId: [].concat(id, [\"\"])\n });\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n // Inline Source Message\n if (message === undefined && source !== undefined) {\n message = messageStringToWorldReadySchema(source);\n }\n }\n var messageParts;\n if (isMessageValueMissing(message)) {\n message = undefined;\n }\n if (message === undefined) {\n if (fallback === \"code\") {\n messageParts = [{\n type: \"missingMessage\",\n value: id.join(\".\"),\n id: id\n }];\n }\n } else if (typeof message === \"string\") {\n messageParts = [{\n type: \"literal\",\n value: message\n }];\n } else {\n messageParts = message._message;\n }\n if (process.env.NODE_ENV !== \"production\") {\n // Inline Source Message\n if (source && cldr.attributes.language !== \"en\") {\n messageParts = pseudoLocMessageParts(messageParts);\n }\n }\n return messageParts;\n}\n\n/**\n * MessageFormat(worldReady, options)\n */\nvar MessageFormat = /*#__PURE__*/function () {\n function MessageFormat(worldReady, options) {\n // Error Check: WorldReady Object\n if (process.env.NODE_ENV !== \"production\") {\n assert(isWorldReadyInstance(worldReady), \"WorldReady object missing.\");\n try {\n assertType(options, \"options\", [\"array\", \"plain object\"]);\n } catch (error) {\n var _error$attributes = error.attributes,\n parameterType = _error$attributes.parameterType,\n parameterValue = _error$attributes.parameterValue;\n // If they passed a string, they probably meant `{ id }` instead.\n if (parameterType === \"string\") {\n error.message += \". Did you mean `{ id: \\\"\" + parameterValue + \"\\\" }`? (note the object and the `id` key)\";\n }\n throw error;\n }\n }\n if (Array.isArray(options)) {\n options = {\n id: options\n };\n }\n var _options = options,\n id = _options.id,\n _options$fallback = _options.fallback,\n fallback = _options$fallback === void 0 ? \"code\" : _options$fallback,\n source = _options.source,\n namespace = _options.namespace;\n if (process.env.NODE_ENV !== \"production\") {\n assertType(id, \"id\", [\"array\", \"string\"]);\n assertRange(fallback, [\"code\", \"none\"], \"options.fallback must be 'none', or 'code'\");\n if (namespace) {\n assertType(namespace, \"namespace\", [\"string\", \"array\"]);\n }\n }\n if (typeof id === \"string\") {\n id = id.split(\".\");\n }\n if (namespace) {\n if (typeof namespace === \"string\") {\n namespace = namespace.split(\".\");\n }\n id = [].concat(namespace, id);\n }\n if (process.env.NODE_ENV !== \"production\") {\n id.forEach(function (part, i) {\n return assertType(part, \"id[\" + i + \"]\", [\"string\"]);\n });\n }\n\n // TODO if server side only\n this.messageParts = getMessageParts(worldReady, id, source, fallback);\n this._runtimeArgs = [options];\n this._runtimeValue = this.messageParts;\n }\n var _proto = MessageFormat.prototype;\n _proto.format = function format(variables) {\n if (!this.messageParts) return;\n var parts = this.formatToParts(variables);\n if (process.env.NODE_ENV !== \"production\") {\n parts.forEach(function (_ref8) {\n var type = _ref8.type;\n return assert(type !== \"variable-block\", \"Use .formatToParts() to format messages containing `variable-block` parts\");\n });\n }\n return parts.map(function (_ref9) {\n var value = _ref9.value;\n return value;\n }).join(\"\");\n };\n _proto.formatToParts = function formatToParts(variables) {\n if (!this.messageParts) return;\n if (process.env.NODE_ENV !== \"production\") {\n assertType(variables, \"variables\", [\"plain object\", \"undefined\"]);\n assertMessageParts(this.messageParts, variables);\n }\n return _formatToParts(this.messageParts, variables);\n };\n return MessageFormat;\n}();\n\nexport { MessageFormat, getMessageParts };\n","import 'core-js/modules/es.symbol';\nimport 'core-js/modules/es.symbol.description';\nimport 'core-js/modules/es.symbol.to-primitive';\nimport 'core-js/modules/es.array.join';\nimport 'core-js/modules/es.date.to-primitive';\nimport 'core-js/modules/es.number.constructor';\nimport 'core-js/modules/es.object.to-string';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.match';\nimport 'core-js/modules/es.string.replace';\nimport 'core-js/modules/es.string.split';\nimport { isWorldReadyInstance } from '@paypalcorp/worldready-core';\nimport { assert } from 'yaassertion';\nimport 'globalize/dist/globalize/number';\n\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar getMissingMetadataError = function getMissingMetadataError(path) {\n var message = \"Missing WorldReady metadata, please refer to https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about-load-worldready-data.html\";\n if (path) {\n message += \"\\nPath: \" + path;\n }\n return new Error(message);\n};\nfunction globalizeToWorldReadyError(error) {\n if (error.code === \"E_MISSING_CLDR\") {\n return getMissingMetadataError(error.stack);\n }\n return new Error([\"Oops, internal error\", error.message, error.stack].join(\"\\n\"));\n}\n\n/**\n * Note:\n * - Below, we \"borrow code\" from globalize since it doesn't export the resolved properties.\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/number.js\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/number/pattern-properties.js\n * https://github.com/globalizejs/globalize/blob/8f4f2bffed00231aa2f7f4f46c3a4687ace46ab6/src/number/format-properties.js\n * - NOT using numberFormatter.runtimeArgs because it's NOT available when code is minified.\n *\n * TODO: Expose resolvedOptions() in globalize and reuse it here.\n */\n\nfunction numberNumberingSystem(cldr) {\n var nu = cldr.attributes[\"u-nu\"];\n if (nu) {\n if (nu === \"traditio\") {\n nu = \"traditional\";\n }\n if ([\"native\", \"traditional\", \"finance\"].indexOf(nu) !== -1) {\n // Unicode locale extension `u-nu` is set using either (native, traditional or\n // finance). So, lookup the respective locale's numberingSystem and return it.\n return cldr.main([\"numbers/otherNumberingSystems\", nu]);\n }\n\n // Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it.\n return nu;\n }\n\n // Return the default numberingSystem.\n return cldr.main(\"numbers/defaultNumberingSystem\");\n}\nfunction numberPattern(style, cldr) {\n if (style !== \"decimal\" && style !== \"percent\") {\n throw new Error(\"Invalid style\");\n }\n return cldr.main([\"numbers\", style + \"Formats-numberSystem-\" + numberNumberingSystem(cldr), \"standard\"]);\n}\nvar numberPatternRe = /^(('([^']|'')*'|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\nfunction numberPatternProperties(pattern) {\n var fractionPattern, integerPattern, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, minimumIntegerDigits, minimumSignificantDigits;\n pattern = pattern.match(numberPatternRe);\n if (!pattern) {\n throw new Error(\"Invalid pattern: \" + pattern);\n }\n\n // Significant digit format\n {\n fractionPattern = pattern[8];\n integerPattern = pattern[7];\n if (fractionPattern) {\n // Minimum fraction digits, and rounding.\n fractionPattern.replace(/[0-9]+/, function (match) {\n minimumFractionDigits = match;\n });\n if (minimumFractionDigits) {\n minimumFractionDigits = minimumFractionDigits.length;\n } else {\n minimumFractionDigits = 0;\n }\n\n // Maximum fraction digits\n // 1: ignore decimal character\n maximumFractionDigits = fractionPattern.length - 1; /* 1 */\n } else {\n minimumFractionDigits = 0;\n maximumFractionDigits = 0;\n }\n\n // Minimum integer digits\n integerPattern.replace(/0+$/, function (match) {\n minimumIntegerDigits = match.length;\n });\n }\n return [0, 0, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, minimumSignificantDigits, maximumSignificantDigits];\n}\nfunction numberFormatProperties(pattern, cldr, options) {\n var positivePattern, properties;\n function getOptions(attribute, propertyIndex) {\n if (attribute in options) {\n properties[propertyIndex] = options[attribute];\n }\n }\n options = options || {};\n pattern = pattern.split(\";\");\n positivePattern = pattern[0];\n properties = numberPatternProperties(positivePattern);\n if (options.compact) {\n // The compact digits number pattern is always `0+`, so override the following properties.\n // Note: minimumIntegerDigits would actually range from `0` to `000` based on the scale of\n // the value to be formatted, though we're always using 1 as a simplification, because the\n // number won't be zero-padded since we chose the right format based on the scale, i.e.,\n // we'd never see something like `003M` anyway.\n properties[2] = 1; // minimumIntegerDigits\n properties[3] = 0; // minimumFractionDigits\n properties[4] = 0; // maximumFractionDigits\n properties[5] = properties[6] = undefined; // minimumSignificantDigits & // maximumSignificantDigits\n }\n getOptions(\"minimumIntegerDigits\", 2);\n getOptions(\"minimumFractionDigits\", 3);\n getOptions(\"maximumFractionDigits\", 4);\n getOptions(\"minimumSignificantDigits\", 5);\n getOptions(\"maximumSignificantDigits\", 6);\n\n // Normalize number of digits if only one of either minimumFractionDigits or\n // maximumFractionDigits is passed in as an option\n if (\"minimumFractionDigits\" in options && !(\"maximumFractionDigits\" in options)) {\n // maximumFractionDigits = Math.max( minimumFractionDigits, maximumFractionDigits );\n properties[4] = Math.max(properties[3], properties[4]);\n } else if (!(\"minimumFractionDigits\" in options) && \"maximumFractionDigits\" in options) {\n // minimumFractionDigits = Math.min( minimumFractionDigits, maximumFractionDigits );\n properties[3] = Math.min(properties[3], properties[4]);\n }\n return properties;\n}\nfunction resolvedOptions(globalize, options) {\n if (options === void 0) {\n options = {};\n }\n var pattern;\n var cldr = globalize.cldr;\n if (options.raw) {\n pattern = options.raw;\n } else {\n pattern = numberPattern(options.style || \"decimal\", cldr);\n }\n var properties = numberFormatProperties(pattern, cldr, options);\n var minimumIntegerDigits = properties[2],\n minimumFractionDigits = properties[3],\n maximumFractionDigits = properties[4],\n minimumSignificantDigits = properties[5],\n maximumSignificantDigits = properties[6];\n return {\n minimumIntegerDigits: minimumIntegerDigits,\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits,\n minimumSignificantDigits: minimumSignificantDigits,\n maximumSignificantDigits: maximumSignificantDigits\n };\n}\n\n/**\n * This class is a wrapper class on top of Griffin 2.0.\n */\nvar NumberFormat = /*#__PURE__*/function () {\n function NumberFormat(worldReady, options) {\n // Error Check: WorldReady Object\n if (process.env.NODE_ENV !== \"production\") {\n assert(isWorldReadyInstance(worldReady), \"WorldReady object missing.\");\n }\n try {\n this.numberFormatter = worldReady.globalize.numberFormatter(options);\n this.numberParser = worldReady.globalize.numberParser(options);\n } catch (error) {\n throw globalizeToWorldReadyError(error);\n }\n var resolvedOptionsCache;\n this._resolvedOptions = function () {\n if (!resolvedOptionsCache) {\n resolvedOptionsCache = resolvedOptions(worldReady.globalize, options);\n }\n return resolvedOptionsCache;\n };\n }\n\n /**\n * Errors handled by Globalize\n */\n var _proto = NumberFormat.prototype;\n _proto.format = function format(number) {\n return this.numberFormatter(number);\n }\n\n /**\n * Errors handled by Globalize\n */;\n _proto.parse = function parse(localizedNumber) {\n return this.numberParser(localizedNumber);\n };\n _proto.resolvedOptions = function resolvedOptions() {\n return this._resolvedOptions();\n };\n return NumberFormat;\n}(); // Exposing number's resolvedOptions for reuse on CurrencyFormat.\n_defineProperty(NumberFormat, \"_resolvedOptions\", resolvedOptions);\n\nexport { NumberFormat };\n","import 'core-js/modules/es.symbol';\nimport 'core-js/modules/es.symbol.description';\nimport 'core-js/modules/es.symbol.to-primitive';\nimport 'core-js/modules/es.array.map';\nimport 'core-js/modules/es.date.to-primitive';\nimport 'core-js/modules/es.function.name';\nimport 'core-js/modules/es.number.constructor';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.object.to-string';\nimport React, { Component } from 'react';\nimport { assert, assertType } from 'yaassertion';\nimport { MessageFormat } from '@paypalcorp/worldready-message';\nimport { WorldReady, isWorldReadyInstance } from '@paypalcorp/worldready-core';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nvar _excluded = [\"children\", \"id\", \"namespace\", \"variables\", \"source\"];\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nvar Context = React.createContext();\nvar ContextProvider = function ContextProvider(_ref) {\n var locale = _ref.locale,\n children = _ref.children;\n var worldReady = new WorldReady(locale);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: worldReady\n }, children);\n};\nvar ContextConsumer = Context.Consumer;\nvar MessageParts = function MessageParts(_ref2) {\n var messageParts = _ref2.messageParts;\n return /*#__PURE__*/React.createElement(React.Fragment, null, messageParts.map(function (_ref3, i) {\n var type = _ref3.type,\n value = _ref3.value,\n children = _ref3.children,\n variableName = _ref3.variableName;\n if (type === \"variable-block\") {\n var ret = value( /*#__PURE__*/React.createElement(MessageParts, {\n messageParts: children\n }));\n if (process.env.NODE_ENV !== \"production\") {\n assert(React.isValidElement(ret), \"Variable {{variableName}} should return a react element, not {{ret}}\", {\n variableName: variableName,\n ret: ret\n });\n }\n return React.cloneElement(ret, Object.assign({\n key: i\n }, value.props));\n }\n if (React.isValidElement(value)) {\n return React.cloneElement(value, Object.assign({\n key: i\n }, value.props));\n }\n return value;\n }));\n};\nvar Message = /*#__PURE__*/function (_Component) {\n function Message() {\n return _Component.apply(this, arguments) || this;\n }\n _inheritsLoose(Message, _Component);\n var _proto = Message.prototype;\n _proto.render = function render() {\n if (process.env.NODE_ENV !== \"production\") {\n assert(typeof this.props !== \"string\", \"Message function got a String, but expected an Object. Did you mean { id: \\\"\" + this.props + \"\\\"} instead?\");\n }\n var _this$props = this.props,\n children = _this$props.children,\n id = _this$props.id,\n namespace = _this$props.namespace,\n variables = _this$props.variables,\n source = _this$props.source,\n otherProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n if (process.env.NODE_ENV !== \"production\") {\n // 1: There are cases where empty elements are coming as empty array []\n // children, so need to check for length as well. At present we did not\n // identify the cause, it could be related to react version or due to preact.\n // Not able to reproduce this in unit tests ¯\\_(ツ)_/¯\n assert(!children || !children.length /* 1 */, \"Message must be an empty element (no children)\");\n assertType(id, \"id\", [\"array\", \"string\"]);\n if (namespace) {\n assertType(namespace, \"namespace\", [\"array\", \"string\"]);\n }\n }\n var worldReady = this.context;\n if (process.env.NODE_ENV !== \"production\") {\n assert(isWorldReadyInstance(worldReady), \"Missing worldReady object. Please read \" + \"https://github.paypal.com/pages/Globalization-R/worldready-js\" + \"/about-get-started.html#reactjs\");\n }\n var messageFmt = new MessageFormat(worldReady, {\n id: id,\n source: source,\n namespace: namespace\n });\n\n // If message is instance of ContentMessage:\n var _variables = variables || otherProps;\n\n // TODO cache formatted message, see react-globalize for reference.\n return /*#__PURE__*/React.createElement(MessageParts, {\n messageParts: messageFmt.formatToParts(_variables)\n });\n };\n return Message;\n}(Component);\n_defineProperty(Message, \"contextType\", Context);\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || \"Component\";\n}\nfunction injectWorldReady(WrappedComponent) {\n var InjectWorldReady = /*#__PURE__*/function (_Component2) {\n function InjectWorldReady() {\n return _Component2.apply(this, arguments) || this;\n }\n _inheritsLoose(InjectWorldReady, _Component2);\n var _proto2 = InjectWorldReady.prototype;\n _proto2.render = function render() {\n var _this = this;\n return /*#__PURE__*/React.createElement(ContextConsumer, null, function (worldReady) {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, _this.props, {\n worldReady: worldReady,\n griffin: worldReady\n }));\n });\n };\n return InjectWorldReady;\n }(Component); // Why this? https://reactjs.org/docs/higher-order-components.html#static-methods-must-be-copied-over\n // Why this? https://reactjs.org/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging\n _defineProperty(InjectWorldReady, \"displayName\", \"InjectWorldReady(\" + getDisplayName(WrappedComponent) + \")\");\n _defineProperty(InjectWorldReady, \"WrappedComponent\", WrappedComponent);\n hoistNonReactStatic(InjectWorldReady, WrappedComponent);\n return InjectWorldReady;\n}\nvar injectGriffin = injectWorldReady;\n\nexport { Context, ContextConsumer, ContextProvider, Message, injectGriffin, injectWorldReady };\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData\n status?: number;\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n unstable_actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n HandlerResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n unstable_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n unstable_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches\n );\n result = results[0];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.unstable_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n\n let actionData: Record | null | undefined;\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n actionData = {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n actionData = null;\n } else {\n actionData = state.actionData;\n }\n }\n\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.unstable_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n fetchRequest,\n [match],\n matches\n );\n let result = results[0];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[0];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n }),\n request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type, status } = handlerResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result, statusCode: status };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"beaver\", [], factory) : \"object\" == typeof exports ? exports.beaver = factory() : root.beaver = factory();\n}(\"undefined\" != typeof self ? self : this, (function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.r = function(exports) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {\n value: \"Module\"\n });\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n };\n __webpack_require__.t = function(value, mode) {\n 1 & mode && (value = __webpack_require__(value));\n if (8 & mode) return value;\n if (4 & mode && \"object\" == typeof value && value && value.__esModule) return value;\n var ns = Object.create(null);\n __webpack_require__.r(ns);\n Object.defineProperty(ns, \"default\", {\n enumerable: !0,\n value: value\n });\n if (2 & mode && \"string\" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {\n return value[key];\n }.bind(null, key));\n return ns;\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return {}.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = 0);\n }([ function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n __webpack_require__.r(__webpack_exports__);\n __webpack_require__.d(__webpack_exports__, \"Logger\", (function() {\n return Logger;\n }));\n __webpack_require__.d(__webpack_exports__, \"LOG_LEVEL\", (function() {\n return LOG_LEVEL;\n }));\n __webpack_require__.d(__webpack_exports__, \"PROTOCOL\", (function() {\n return constants_PROTOCOL;\n }));\n __webpack_require__.d(__webpack_exports__, \"canUseSendBeacon\", (function() {\n return canUseSendBeacon;\n }));\n __webpack_require__.d(__webpack_exports__, \"extendIfDefined\", (function() {\n return extendIfDefined;\n }));\n __webpack_require__.d(__webpack_exports__, \"isAmplitude\", (function() {\n return util_isAmplitude;\n }));\n __webpack_require__.d(__webpack_exports__, \"sendBeacon\", (function() {\n return sendBeacon;\n }));\n __webpack_require__.d(__webpack_exports__, \"getHTTPTransport\", (function() {\n return getHTTPTransport;\n }));\n function _extends() {\n return (_extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) ({}).hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }).apply(this, arguments);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [];\n var possiblyUnhandledPromiseHandlers = [];\n var activeCount = 0;\n var flushPromise;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n this.resolved = void 0;\n this.rejected = void 0;\n this.errorHandled = void 0;\n this.value = void 0;\n this.error = void 0;\n this.handlers = void 0;\n this.dispatching = void 0;\n this.stack = void 0;\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result;\n var _error;\n var resolved = !1;\n var rejected = !1;\n var isAsync = !1;\n startActive();\n try {\n handler((function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }), (function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n }));\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n var _proto = ZalgoPromise.prototype;\n _proto.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n _proto.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : {}.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout((function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout((function() {\n throw err;\n }), 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }), 1);\n this.dispatch();\n return this;\n };\n _proto.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n _proto.dispatch = function() {\n var resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!this.dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n var chain = function(firstPromise, secondPromise) {\n return firstPromise.then((function(res) {\n secondPromise.resolve(res);\n }), (function(err) {\n secondPromise.reject(err);\n }));\n };\n for (var i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], onSuccess = _handlers$i.onSuccess, onError = _handlers$i.onError, promise = _handlers$i.promise;\n var _result2 = void 0;\n if (resolved) try {\n _result2 = onSuccess ? onSuccess(this.value) : this.value;\n } catch (err) {\n promise.reject(err);\n continue;\n } else if (rejected) {\n if (!onError) {\n promise.reject(this.error);\n continue;\n }\n try {\n _result2 = onError(this.error);\n } catch (err) {\n promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n var promiseResult = _result2;\n promiseResult.resolved ? promise.resolve(promiseResult.value) : promise.reject(promiseResult.error);\n promiseResult.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? promise.resolve(_result2.value) : promise.reject(_result2.error) : chain(_result2, promise) : promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n _proto.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise;\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n _proto.catch = function(onError) {\n return this.then(void 0, onError);\n };\n _proto.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then((function(result) {\n return ZalgoPromise.try(onFinally).then((function() {\n return result;\n }));\n }), (function(err) {\n return ZalgoPromise.try(onFinally).then((function() {\n throw err;\n }));\n }));\n };\n _proto.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout((function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }), time);\n return this.then((function(result) {\n clearTimeout(timeout);\n return result;\n }));\n };\n _proto.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n _proto.lazy = function() {\n this.errorHandled = !0;\n return this;\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise((function(resolve, reject) {\n return value.then(resolve, reject);\n })) : (new ZalgoPromise).resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return (new ZalgoPromise).reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return (new ZalgoPromise).asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise;\n var count = promises.length;\n var results = [].slice();\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then((function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }), (function(err) {\n secondPromise.reject(err);\n }));\n };\n for (var i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n var awaitPromises = [];\n var _loop = function(key) {\n if (promises.hasOwnProperty(key)) {\n var value = promises[key];\n utils_isPromise(value) ? awaitPromises.push(value.then((function(res) {\n result[key] = res;\n }))) : result[key] = value;\n }\n };\n for (var key in promises) _loop(key);\n return ZalgoPromise.all(awaitPromises).then((function() {\n return result;\n }));\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise((function(resolve) {\n setTimeout(resolve, _delay);\n }));\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new Zalgo;\n flushActive();\n return promise;\n }(ZalgoPromise);\n };\n return ZalgoPromise;\n }();\n var IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function getActualProtocol(win) {\n void 0 === win && (win = window);\n return win.location.protocol;\n }\n function getProtocol(win) {\n void 0 === win && (win = window);\n if (win.mockDomain) {\n var protocol = win.mockDomain.split(\"//\")[0];\n if (protocol) return protocol;\n }\n return getActualProtocol(win);\n }\n function isAboutProtocol(win) {\n void 0 === win && (win = window);\n return \"about:\" === getProtocol(win);\n }\n function canReadFromWindow(win) {\n try {\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain(win) {\n void 0 === win && (win = window);\n var location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = getActualProtocol(win);\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (\"file:\" === protocol) return \"file://\";\n if (\"about:\" === protocol) {\n var parent = function(win) {\n void 0 === win && (win = window);\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }(win);\n return parent && canReadFromWindow() ? getActualDomain(parent) : \"about://\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function getDomain(win) {\n void 0 === win && (win = window);\n var domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(\"mock:\") ? win.mockDomain : domain;\n }\n function isSameDomain(win) {\n if (!function(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n } catch (err) {}\n try {\n if (function(win) {\n void 0 === win && (win = window);\n return \"mock:\" === getProtocol(win);\n }(win) && canReadFromWindow()) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n if (getDomain(window) === getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }\n var iframeWindows = [];\n var iframeFrames = [];\n function isWindowClosed(win, allowMock) {\n void 0 === allowMock && (allowMock = !0);\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && isSameDomain(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n var parent = frame;\n for (;parent.parentNode && parent.parentNode !== parent; ) parent = parent.parentNode;\n if (!parent.host || !doc.documentElement.contains(parent.host)) return !0;\n }\n return !1;\n }(frame)) return !0;\n }\n return !1;\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === {}.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (\"postMessage\" in obj && \"self\" in obj && \"location\" in obj) return !0;\n } catch (err) {}\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n this.name = void 0;\n this.weakmap = void 0;\n this.keys = void 0;\n this.values = void 0;\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap;\n var testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap;\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n var _proto = CrossDomainSafeWeakMap.prototype;\n _proto._cleanupClosedWindows = function() {\n var weakmap = this.weakmap;\n var keys = this.keys;\n for (var i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n _proto.isSafeToReadWrite = function(key) {\n return !isWindow(key);\n };\n _proto.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name;\n var entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys;\n var values = this.values;\n var index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n _proto.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n _proto.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys;\n var index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n _proto.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n _proto.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }();\n function getFunctionName(fn) {\n return fn.name || fn.__name__ || fn.displayName || \"anonymous\";\n }\n function setFunctionName(fn, name) {\n try {\n delete fn.name;\n fn.name = name;\n } catch (err) {}\n fn.__name__ = fn.displayName = name;\n return fn;\n }\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"uid_\" + \"xxxxxxxxxx\".replace(/./g, (function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n })) + \"_\" + function(str) {\n if (\"function\" == typeof btoa) return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (function(m, p1) {\n return String.fromCharCode(parseInt(p1, 16));\n }))).replace(/[=]/g, \"\");\n if (\"undefined\" != typeof Buffer) return Buffer.from(str, \"utf8\").toString(\"base64\").replace(/[=]/g, \"\");\n throw new Error(\"Can not find window.btoa or Buffer\");\n }((new Date).toISOString().slice(11, 19).replace(\"T\", \".\")).replace(/[^a-zA-Z0-9]/g, \"\").toLowerCase();\n }\n var objectIDs;\n function serializeArgs(args) {\n try {\n return JSON.stringify([].slice.call(args), (function(subkey, val) {\n return \"function\" == typeof val ? \"memoize[\" + function(obj) {\n objectIDs = objectIDs || new weakmap_CrossDomainSafeWeakMap;\n if (null == obj || \"object\" != typeof obj && \"function\" != typeof obj) throw new Error(\"Invalid object\");\n var uid = objectIDs.get(obj);\n if (!uid) {\n uid = typeof obj + \":\" + uniqueID();\n objectIDs.set(obj, uid);\n }\n return uid;\n }(val) + \"]\" : function(element) {\n var passed = !1;\n try {\n (element instanceof window.Element || null !== element && \"object\" == typeof element && 1 === element.nodeType && \"object\" == typeof element.style && \"object\" == typeof element.ownerDocument) && (passed = !0);\n } catch (_) {}\n return passed;\n }(val) ? {} : val;\n }));\n } catch (err) {\n throw new Error(\"Arguments not serializable -- can not be used to memoize\");\n }\n }\n function getEmptyObject() {\n return {};\n }\n var memoizeGlobalIndex = 0;\n var memoizeGlobalIndexValidFrom = 0;\n function memoize(method, options) {\n void 0 === options && (options = {});\n var _options$thisNamespac = options.thisNamespace, thisNamespace = void 0 !== _options$thisNamespac && _options$thisNamespac, cacheTime = options.time;\n var simpleCache;\n var thisCache;\n var memoizeIndex = memoizeGlobalIndex;\n memoizeGlobalIndex += 1;\n var memoizedFunction = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n if (memoizeIndex < memoizeGlobalIndexValidFrom) {\n simpleCache = null;\n thisCache = null;\n memoizeIndex = memoizeGlobalIndex;\n memoizeGlobalIndex += 1;\n }\n var cache;\n cache = thisNamespace ? (thisCache = thisCache || new weakmap_CrossDomainSafeWeakMap).getOrSet(this, getEmptyObject) : simpleCache = simpleCache || {};\n var cacheKey;\n try {\n cacheKey = serializeArgs(args);\n } catch (_unused) {\n return method.apply(this, arguments);\n }\n var cacheResult = cache[cacheKey];\n if (cacheResult && cacheTime && Date.now() - cacheResult.time < cacheTime) {\n delete cache[cacheKey];\n cacheResult = null;\n }\n if (cacheResult) return cacheResult.value;\n var time = Date.now();\n var value = method.apply(this, arguments);\n cache[cacheKey] = {\n time: time,\n value: value\n };\n return value;\n };\n memoizedFunction.reset = function() {\n simpleCache = null;\n thisCache = null;\n };\n return setFunctionName(memoizedFunction, (options.name || getFunctionName(method)) + \"::memoized\");\n }\n memoize.clear = function() {\n memoizeGlobalIndexValidFrom = memoizeGlobalIndex;\n };\n function src_util_noop() {}\n memoize((function(obj) {\n if (Object.values) return Object.values(obj);\n var result = [];\n for (var key in obj) obj.hasOwnProperty(key) && result.push(obj[key]);\n return result;\n }));\n function objFilter(obj, filter) {\n void 0 === filter && (filter = Boolean);\n var result = {};\n for (var key in obj) obj.hasOwnProperty(key) && filter(obj[key], key) && (result[key] = obj[key]);\n return result;\n }\n Error;\n function isDocumentReady() {\n return Boolean(document.body) && \"complete\" === document.readyState;\n }\n function isDocumentInteractive() {\n return Boolean(document.body) && \"interactive\" === document.readyState;\n }\n memoize((function() {\n return new promise_ZalgoPromise((function(resolve) {\n if (isDocumentReady() || isDocumentInteractive()) return resolve();\n var interval = setInterval((function() {\n if (isDocumentReady() || isDocumentInteractive()) {\n clearInterval(interval);\n return resolve();\n }\n }), 10);\n }));\n }));\n function dom_isBrowser() {\n return \"undefined\" != typeof window && void 0 !== window.location;\n }\n var currentScript = \"undefined\" != typeof document ? document.currentScript : null;\n var getCurrentScript = memoize((function() {\n if (currentScript) return currentScript;\n if (currentScript = function() {\n try {\n var stack = function() {\n try {\n throw new Error(\"_\");\n } catch (err) {\n return err.stack || \"\";\n }\n }();\n var stackDetails = /.*at [^(]*\\((.*):(.+):(.+)\\)$/gi.exec(stack);\n var scriptLocation = stackDetails && stackDetails[1];\n if (!scriptLocation) return;\n for (var _i22 = 0, _Array$prototype$slic2 = [].slice.call(document.getElementsByTagName(\"script\")).reverse(); _i22 < _Array$prototype$slic2.length; _i22++) {\n var script = _Array$prototype$slic2[_i22];\n if (script.src && script.src === scriptLocation) return script;\n }\n } catch (err) {}\n }()) return currentScript;\n throw new Error(\"Can not determine current script\");\n }));\n var currentUID = uniqueID();\n memoize((function() {\n var script;\n try {\n script = getCurrentScript();\n } catch (err) {\n return currentUID;\n }\n var uid = script.getAttribute(\"data-uid\");\n if (uid && \"string\" == typeof uid) return uid;\n if ((uid = script.getAttribute(\"data-uid-auto\")) && \"string\" == typeof uid) return uid;\n if (script.src) {\n var hashedString = function(str) {\n var hash = \"\";\n for (var i = 0; i < str.length; i++) {\n var total = str[i].charCodeAt(0) * i;\n str[i + 1] && (total += str[i + 1].charCodeAt(0) * (i - 1));\n hash += String.fromCharCode(97 + Math.abs(total) % 26);\n }\n return hash;\n }(JSON.stringify({\n src: script.src,\n dataset: script.dataset\n }));\n uid = \"uid_\" + hashedString.slice(hashedString.length - 30);\n } else uid = uniqueID();\n script.setAttribute(\"data-uid-auto\", uid);\n return uid;\n }));\n var http_headerBuilders = [];\n var LOG_LEVEL = {\n DEBUG: \"debug\",\n INFO: \"info\",\n WARN: \"warn\",\n ERROR: \"error\"\n };\n var constants_PROTOCOL = {\n FILE: \"file:\"\n };\n var AUTO_FLUSH_LEVEL = [ LOG_LEVEL.WARN, LOG_LEVEL.ERROR ];\n var LOG_LEVEL_PRIORITY = [ LOG_LEVEL.ERROR, LOG_LEVEL.WARN, LOG_LEVEL.INFO, LOG_LEVEL.DEBUG ];\n var DEFAULT_LOG_LEVEL = LOG_LEVEL.WARN;\n var canUseSendBeacon = function(_ref) {\n var headers = _ref.headers, enableSendBeacon = _ref.enableSendBeacon;\n var hasHeaders = headers && Object.keys(headers).length;\n return !!(window && window.navigator.sendBeacon && !hasHeaders && enableSendBeacon && window.Blob);\n };\n var util_isAmplitude = function(url) {\n return \"https://api2.amplitude.com/2/httpapi\" === url;\n };\n var sendBeacon = function(_ref2) {\n var _ref2$win = _ref2.win, win = void 0 === _ref2$win ? window : _ref2$win, url = _ref2.url, data = _ref2.data, _ref2$useBlob = _ref2.useBlob, useBlob = void 0 === _ref2$useBlob || _ref2$useBlob;\n try {\n var json = JSON.stringify(data);\n if (!win.navigator.sendBeacon) throw new Error(\"No sendBeacon available\");\n if (useBlob) {\n var blob = new Blob([ json ], {\n type: \"application/json\"\n });\n return win.navigator.sendBeacon(url, blob);\n }\n return win.navigator.sendBeacon(url, json);\n } catch (e) {\n return !1;\n }\n };\n var extendIfDefined = function(target, source) {\n for (var key in source) source.hasOwnProperty(key) && (target[key] = source[key]);\n };\n function getHTTPTransport(httpWin) {\n void 0 === httpWin && (httpWin = window);\n var win = isSameDomain(httpWin) ? function(win) {\n if (!isSameDomain(win)) throw new Error(\"Expected window to be same domain\");\n return win;\n }(httpWin) : window;\n return function(_ref) {\n var url = _ref.url, method = _ref.method, headers = _ref.headers, json = _ref.json, _ref$enableSendBeacon = _ref.enableSendBeacon, enableSendBeacon = void 0 !== _ref$enableSendBeacon && _ref$enableSendBeacon;\n return promise_ZalgoPromise.try((function() {\n var beaconResult = !1;\n canUseSendBeacon({\n headers: headers,\n enableSendBeacon: enableSendBeacon\n }) && (beaconResult = util_isAmplitude(url) ? sendBeacon({\n win: win,\n url: url,\n data: json,\n useBlob: !1\n }) : sendBeacon({\n win: win,\n url: url,\n data: json,\n useBlob: !0\n }));\n return beaconResult || function(_ref) {\n var url = _ref.url, _ref$method = _ref.method, method = void 0 === _ref$method ? \"get\" : _ref$method, _ref$headers = _ref.headers, headers = void 0 === _ref$headers ? {} : _ref$headers, json = _ref.json, data = _ref.data, body = _ref.body, _ref$win = _ref.win, win = void 0 === _ref$win ? window : _ref$win, _ref$timeout = _ref.timeout, timeout = void 0 === _ref$timeout ? 0 : _ref$timeout;\n return new promise_ZalgoPromise((function(resolve, reject) {\n if (json && data || json && body || data && json) throw new Error(\"Only options.json or options.data or options.body should be passed\");\n var normalizedHeaders = {};\n for (var _i4 = 0, _Object$keys2 = Object.keys(headers); _i4 < _Object$keys2.length; _i4++) {\n var _key2 = _Object$keys2[_i4];\n normalizedHeaders[_key2.toLowerCase()] = headers[_key2];\n }\n json ? normalizedHeaders[\"content-type\"] = normalizedHeaders[\"content-type\"] || \"application/json\" : (data || body) && (normalizedHeaders[\"content-type\"] = normalizedHeaders[\"content-type\"] || \"application/x-www-form-urlencoded; charset=utf-8\");\n normalizedHeaders.accept = normalizedHeaders.accept || \"application/json\";\n for (var _i6 = 0; _i6 < http_headerBuilders.length; _i6++) {\n var builtHeaders = (0, http_headerBuilders[_i6])();\n for (var _i8 = 0, _Object$keys4 = Object.keys(builtHeaders); _i8 < _Object$keys4.length; _i8++) {\n var _key3 = _Object$keys4[_i8];\n normalizedHeaders[_key3.toLowerCase()] = builtHeaders[_key3];\n }\n }\n var xhr = new win.XMLHttpRequest;\n xhr.addEventListener(\"load\", (function() {\n var responseHeaders = function(rawHeaders) {\n void 0 === rawHeaders && (rawHeaders = \"\");\n var result = {};\n for (var _i2 = 0, _rawHeaders$trim$spli2 = rawHeaders.trim().split(\"\\n\"); _i2 < _rawHeaders$trim$spli2.length; _i2++) {\n var _line$split = _rawHeaders$trim$spli2[_i2].split(\":\"), _key = _line$split[0], values = _line$split.slice(1);\n result[_key.toLowerCase()] = values.join(\":\").trim();\n }\n return result;\n }(this.getAllResponseHeaders());\n if (!this.status) return reject(new Error(\"Request to \" + method.toLowerCase() + \" \" + url + \" failed: no response status code.\"));\n var contentType = responseHeaders[\"content-type\"];\n var isJSON = contentType && (0 === contentType.indexOf(\"application/json\") || 0 === contentType.indexOf(\"text/json\"));\n var responseBody = this.responseText;\n try {\n responseBody = JSON.parse(responseBody);\n } catch (err) {\n if (isJSON) return reject(new Error(\"Invalid json: \" + this.responseText + \".\"));\n }\n return resolve({\n status: this.status,\n headers: responseHeaders,\n body: responseBody\n });\n }), !1);\n xhr.addEventListener(\"error\", (function(evt) {\n reject(new Error(\"Request to \" + method.toLowerCase() + \" \" + url + \" failed: \" + evt.toString() + \".\"));\n }), !1);\n xhr.open(method, url, !0);\n for (var _key4 in normalizedHeaders) normalizedHeaders.hasOwnProperty(_key4) && xhr.setRequestHeader(_key4, normalizedHeaders[_key4]);\n json ? body = JSON.stringify(json) : data && (body = Object.keys(data).map((function(key) {\n return encodeURIComponent(key) + \"=\" + (data ? encodeURIComponent(data[key]) : \"\");\n })).join(\"&\"));\n xhr.timeout = timeout;\n xhr.ontimeout = function() {\n reject(new Error(\"Request to \" + method.toLowerCase() + \" \" + url + \" has timed out\"));\n };\n xhr.send(body);\n }));\n }({\n win: win,\n url: url,\n method: method,\n headers: headers,\n json: json\n });\n })).then(src_util_noop);\n };\n }\n function Logger(_ref) {\n var url = _ref.url, prefix = _ref.prefix, _ref$logLevel = _ref.logLevel, logLevel = void 0 === _ref$logLevel ? DEFAULT_LOG_LEVEL : _ref$logLevel, _ref$transport = _ref.transport, transport = void 0 === _ref$transport ? getHTTPTransport() : _ref$transport, amplitudeApiKey = _ref.amplitudeApiKey, _ref$flushInterval = _ref.flushInterval, flushInterval = void 0 === _ref$flushInterval ? 6e4 : _ref$flushInterval, _ref$enableSendBeacon = _ref.enableSendBeacon, enableSendBeacon = void 0 !== _ref$enableSendBeacon && _ref$enableSendBeacon;\n var events = [];\n var tracking = [];\n var payloadBuilders = [];\n var metaBuilders = [];\n var trackingBuilders = [];\n var headerBuilders = [];\n function print(level, event, payload) {\n if (dom_isBrowser() && window.console && window.console.log && !(LOG_LEVEL_PRIORITY.indexOf(level) > LOG_LEVEL_PRIORITY.indexOf(logLevel))) {\n var args = [ event ];\n args.push(payload);\n (payload.error || payload.warning) && args.push(\"\\n\\n\", payload.error || payload.warning);\n try {\n window.console[level] && window.console[level].apply ? window.console[level].apply(window.console, args) : window.console.log && window.console.log.apply && window.console.log.apply(window.console, args);\n } catch (err) {}\n }\n }\n function immediateFlush() {\n return promise_ZalgoPromise.try((function() {\n if (dom_isBrowser() && window.location.protocol !== constants_PROTOCOL.FILE && (events.length || tracking.length)) {\n var meta = {};\n for (var _i2 = 0; _i2 < metaBuilders.length; _i2++) extendIfDefined(meta, (0, metaBuilders[_i2])(meta));\n var headers = {};\n for (var _i4 = 0; _i4 < headerBuilders.length; _i4++) extendIfDefined(headers, (0, \n headerBuilders[_i4])(headers));\n var res;\n url && (res = transport({\n method: \"POST\",\n url: url,\n headers: headers,\n json: {\n events: events,\n meta: meta,\n tracking: tracking\n },\n enableSendBeacon: enableSendBeacon\n }).catch(src_util_noop));\n amplitudeApiKey && transport({\n method: \"POST\",\n url: \"https://api2.amplitude.com/2/httpapi\",\n headers: {},\n json: {\n api_key: amplitudeApiKey,\n events: tracking.map((function(payload) {\n return _extends({\n event_type: payload.transition_name || \"event\",\n event_properties: payload\n }, payload);\n }))\n },\n enableSendBeacon: enableSendBeacon\n }).catch(src_util_noop);\n events = [];\n tracking = [];\n return promise_ZalgoPromise.resolve(res).then(src_util_noop);\n }\n }));\n }\n var flush = function(method, delay) {\n void 0 === delay && (delay = 50);\n var promise;\n var timeout;\n return setFunctionName((function() {\n timeout && clearTimeout(timeout);\n var localPromise = promise = promise || new promise_ZalgoPromise;\n timeout = setTimeout((function() {\n promise = null;\n timeout = null;\n promise_ZalgoPromise.try(method).then((function(result) {\n localPromise.resolve(result);\n }), (function(err) {\n localPromise.reject(err);\n }));\n }), delay);\n return localPromise;\n }), getFunctionName(method) + \"::promiseDebounced\");\n }(immediateFlush);\n function log(level, event, payload) {\n void 0 === payload && (payload = {});\n if (!dom_isBrowser()) return logger;\n prefix && (event = prefix + \"_\" + event);\n var logPayload = _extends({}, objFilter(payload, (function(value) {\n return null != value;\n })), {\n timestamp: Date.now().toString()\n });\n for (var _i6 = 0; _i6 < payloadBuilders.length; _i6++) extendIfDefined(logPayload, (0, \n payloadBuilders[_i6])(logPayload));\n !function(level, event, payload) {\n events.push({\n level: level,\n event: event,\n payload: payload\n });\n -1 !== AUTO_FLUSH_LEVEL.indexOf(level) && flush();\n }(level, event, logPayload);\n print(level, event, logPayload);\n return logger;\n }\n function addBuilder(builders, builder) {\n builders.push(builder);\n return logger;\n }\n dom_isBrowser() && (method = flush, time = flushInterval, function loop() {\n setTimeout((function() {\n method();\n loop();\n }), time);\n }());\n var method, time;\n if (\"object\" == typeof window) {\n window.addEventListener(\"beforeunload\", (function() {\n immediateFlush();\n }));\n window.addEventListener(\"unload\", (function() {\n immediateFlush();\n }));\n window.addEventListener(\"pagehide\", (function() {\n immediateFlush();\n }));\n }\n var logger = {\n debug: function(event, payload) {\n return log(LOG_LEVEL.DEBUG, event, payload);\n },\n info: function(event, payload) {\n return log(LOG_LEVEL.INFO, event, payload);\n },\n warn: function(event, payload) {\n return log(LOG_LEVEL.WARN, event, payload);\n },\n error: function(event, payload) {\n return log(LOG_LEVEL.ERROR, event, payload);\n },\n track: function(payload) {\n void 0 === payload && (payload = {});\n if (!dom_isBrowser()) return logger;\n var trackingPayload = objFilter(payload, (function(value) {\n return null != value;\n }));\n for (var _i8 = 0; _i8 < trackingBuilders.length; _i8++) extendIfDefined(trackingPayload, (0, \n trackingBuilders[_i8])(trackingPayload));\n print(LOG_LEVEL.DEBUG, \"track\", trackingPayload);\n tracking.push(trackingPayload);\n return logger;\n },\n flush: flush,\n immediateFlush: immediateFlush,\n addPayloadBuilder: function(builder) {\n return addBuilder(payloadBuilders, builder);\n },\n addMetaBuilder: function(builder) {\n return addBuilder(metaBuilders, builder);\n },\n addTrackingBuilder: function(builder) {\n return addBuilder(trackingBuilders, builder);\n },\n addHeaderBuilder: function(builder) {\n return addBuilder(headerBuilders, builder);\n },\n setTransport: function(newTransport) {\n transport = newTransport;\n return logger;\n },\n configure: function(opts) {\n opts.url && (url = opts.url);\n opts.prefix && (prefix = opts.prefix);\n opts.logLevel && (logLevel = opts.logLevel);\n opts.transport && (transport = opts.transport);\n opts.amplitudeApiKey && (amplitudeApiKey = opts.amplitudeApiKey);\n opts.flushInterval && (flushInterval = opts.flushInterval);\n opts.enableSendBeacon && (enableSendBeacon = opts.enableSendBeacon);\n return logger;\n }\n };\n return logger;\n }\n } ]);\n}));","/**\n * CLDR JavaScript Library v0.5.4\n * http://jquery.com/\n *\n * Copyright 2013 Rafael Xavier de Souza\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2020-10-22T15:56Z\n */\n/*!\n * CLDR JavaScript Library v0.5.4 2020-10-22T15:56Z MIT license © Rafael Xavier\n * http://git.io/h4lmVg\n */\n(function( root, factory ) {\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD.\n\t\tdefine( factory );\n\t} else if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// Node. CommonJS.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Global\n\t\troot.Cldr = factory();\n\t}\n\n}( this, function() {\n\n\n\tvar arrayIsArray = Array.isArray || function( obj ) {\n\t\treturn Object.prototype.toString.call( obj ) === \"[object Array]\";\n\t};\n\n\n\n\n\tvar pathNormalize = function( path, attributes ) {\n\t\tif ( arrayIsArray( path ) ) {\n\t\t\tpath = path.join( \"/\" );\n\t\t}\n\t\tif ( typeof path !== \"string\" ) {\n\t\t\tthrow new Error( \"invalid path \\\"\" + path + \"\\\"\" );\n\t\t}\n\t\t// 1: Ignore leading slash `/`\n\t\t// 2: Ignore leading `cldr/`\n\t\tpath = path\n\t\t\t.replace( /^\\// , \"\" ) /* 1 */\n\t\t\t.replace( /^cldr\\// , \"\" ); /* 2 */\n\n\t\t// Replace {attribute}'s\n\t\tpath = path.replace( /{[a-zA-Z]+}/g, function( name ) {\n\t\t\tname = name.replace( /^{([^}]*)}$/, \"$1\" );\n\t\t\treturn attributes[ name ];\n\t\t});\n\n\t\treturn path.split( \"/\" );\n\t};\n\n\n\n\n\tvar arraySome = function( array, callback ) {\n\t\tvar i, length;\n\t\tif ( array.some ) {\n\t\t\treturn array.some( callback );\n\t\t}\n\t\tfor ( i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( callback( array[ i ], i, array ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\n\n\n\t/**\n\t * Return the maximized language id as defined in\n\t * http://www.unicode.org/reports/tr35/#Likely_Subtags\n\t * 1. Canonicalize.\n\t * 1.1 Make sure the input locale is in canonical form: uses the right\n\t * separator, and has the right casing.\n\t * TODO Right casing? What df? It seems languages are lowercase, scripts are\n\t * Capitalized, territory is uppercase. I am leaving this as an exercise to\n\t * the user.\n\t *\n\t * 1.2 Replace any deprecated subtags with their canonical values using the\n\t * data in supplemental metadata. Use the first value in the\n\t * replacement list, if it exists. Language tag replacements may have multiple\n\t * parts, such as \"sh\" ➞ \"sr_Latn\" or mo\" ➞ \"ro_MD\". In such a case, the\n\t * original script and/or region are retained if there is one. Thus\n\t * \"sh_Arab_AQ\" ➞ \"sr_Arab_AQ\", not \"sr_Latn_AQ\".\n\t * TODO What data?\n\t *\n\t * 1.3 If the tag is grandfathered (see in the supplemental data), then return it.\n\t * TODO grandfathered?\n\t *\n\t * 1.4 Remove the script code 'Zzzz' and the region code 'ZZ' if they occur.\n\t * 1.5 Get the components of the cleaned-up source tag (languages, scripts,\n\t * and regions), plus any variants and extensions.\n\t * 2. Lookup. Lookup each of the following in order, and stop on the first\n\t * match:\n\t * 2.1 languages_scripts_regions\n\t * 2.2 languages_regions\n\t * 2.3 languages_scripts\n\t * 2.4 languages\n\t * 2.5 und_scripts\n\t * 3. Return\n\t * 3.1 If there is no match, either return an error value, or the match for\n\t * \"und\" (in APIs where a valid language tag is required).\n\t * 3.2 Otherwise there is a match = languagem_scriptm_regionm\n\t * 3.3 Let xr = xs if xs is not empty, and xm otherwise.\n\t * 3.4 Return the language tag composed of languager _ scriptr _ regionr +\n\t * variants + extensions.\n\t *\n\t * @subtags [Array] normalized language id subtags tuple (see init.js).\n\t */\n\tvar coreLikelySubtags = function( Cldr, cldr, subtags, options ) {\n\t\tvar match, matchFound,\n\t\t\tlanguage = subtags[ 0 ],\n\t\t\tscript = subtags[ 1 ],\n\t\t\tsep = Cldr.localeSep,\n\t\t\tterritory = subtags[ 2 ],\n\t\t\tvariants = subtags.slice( 3, 4 );\n\t\toptions = options || {};\n\n\t\t// Skip if (language, script, territory) is not empty [3.3]\n\t\tif ( language !== \"und\" && script !== \"Zzzz\" && territory !== \"ZZ\" ) {\n\t\t\treturn [ language, script, territory ].concat( variants );\n\t\t}\n\n\t\t// Skip if no supplemental likelySubtags data is present\n\t\tif ( typeof cldr.get( \"supplemental/likelySubtags\" ) === \"undefined\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// [2]\n\t\tmatchFound = arraySome([\n\t\t\t[ language, script, territory ],\n\t\t\t[ language, territory ],\n\t\t\t[ language, script ],\n\t\t\t[ language ],\n\t\t\t[ \"und\", script ]\n\t\t], function( test ) {\n\t\t\treturn match = !(/\\b(Zzzz|ZZ)\\b/).test( test.join( sep ) ) /* [1.4] */ && cldr.get( [ \"supplemental/likelySubtags\", test.join( sep ) ] );\n\t\t});\n\n\t\t// [3]\n\t\tif ( matchFound ) {\n\t\t\t// [3.2 .. 3.4]\n\t\t\tmatch = match.split( sep );\n\t\t\treturn [\n\t\t\t\tlanguage !== \"und\" ? language : match[ 0 ],\n\t\t\t\tscript !== \"Zzzz\" ? script : match[ 1 ],\n\t\t\t\tterritory !== \"ZZ\" ? territory : match[ 2 ]\n\t\t\t].concat( variants );\n\t\t} else if ( options.force ) {\n\t\t\t// [3.1.2]\n\t\t\treturn cldr.get( \"supplemental/likelySubtags/und\" ).split( sep );\n\t\t} else {\n\t\t\t// [3.1.1]\n\t\t\treturn;\n\t\t}\n\t};\n\n\n\n\t/**\n\t * Given a locale, remove any fields that Add Likely Subtags would add.\n\t * http://www.unicode.org/reports/tr35/#Likely_Subtags\n\t * 1. First get max = AddLikelySubtags(inputLocale). If an error is signaled,\n\t * return it.\n\t * 2. Remove the variants from max.\n\t * 3. Then for trial in {language, language _ region, language _ script}. If\n\t * AddLikelySubtags(trial) = max, then return trial + variants.\n\t * 4. If you do not get a match, return max + variants.\n\t * \n\t * @maxLanguageId [Array] maxLanguageId tuple (see init.js).\n\t */\n\tvar coreRemoveLikelySubtags = function( Cldr, cldr, maxLanguageId ) {\n\t\tvar match, matchFound,\n\t\t\tlanguage = maxLanguageId[ 0 ],\n\t\t\tscript = maxLanguageId[ 1 ],\n\t\t\tterritory = maxLanguageId[ 2 ],\n\t\t\tvariants = maxLanguageId[ 3 ];\n\n\t\t// [3]\n\t\tmatchFound = arraySome([\n\t\t\t[ [ language, \"Zzzz\", \"ZZ\" ], [ language ] ],\n\t\t\t[ [ language, \"Zzzz\", territory ], [ language, territory ] ],\n\t\t\t[ [ language, script, \"ZZ\" ], [ language, script ] ]\n\t\t], function( test ) {\n\t\t\tvar result = coreLikelySubtags( Cldr, cldr, test[ 0 ] );\n\t\t\tmatch = test[ 1 ];\n\t\t\treturn result && result[ 0 ] === maxLanguageId[ 0 ] &&\n\t\t\t\tresult[ 1 ] === maxLanguageId[ 1 ] &&\n\t\t\t\tresult[ 2 ] === maxLanguageId[ 2 ];\n\t\t});\n\n\t\tif ( matchFound ) {\n\t\t\tif ( variants ) {\n\t\t\t\tmatch.push( variants );\n\t\t\t}\n\t\t\treturn match;\n\t\t}\n\n\t\t// [4]\n\t\treturn maxLanguageId;\n\t};\n\n\n\n\n\t/**\n\t * subtags( locale )\n\t *\n\t * @locale [String]\n\t */\n\tvar coreSubtags = function( locale ) {\n\t\tvar aux, unicodeLanguageId,\n\t\t\tsubtags = [];\n\n\t\tlocale = locale.replace( /_/, \"-\" );\n\n\t\t// Unicode locale extensions.\n\t\taux = locale.split( \"-u-\" );\n\t\tif ( aux[ 1 ] ) {\n\t\t\taux[ 1 ] = aux[ 1 ].split( \"-t-\" );\n\t\t\tlocale = aux[ 0 ] + ( aux[ 1 ][ 1 ] ? \"-t-\" + aux[ 1 ][ 1 ] : \"\");\n\t\t\tsubtags[ 4 /* unicodeLocaleExtensions */ ] = aux[ 1 ][ 0 ];\n\t\t}\n\n\t\t// TODO normalize transformed extensions. Currently, skipped.\n\t\t// subtags[ x ] = locale.split( \"-t-\" )[ 1 ];\n\t\tunicodeLanguageId = locale.split( \"-t-\" )[ 0 ];\n\n\t\t// unicode_language_id = \"root\"\n\t\t// | unicode_language_subtag \n\t\t// (sep unicode_script_subtag)? \n\t\t// (sep unicode_region_subtag)?\n\t\t// (sep unicode_variant_subtag)* ;\n\t\t//\n\t\t// Although unicode_language_subtag = alpha{2,8}, I'm using alpha{2,3}. Because, there's no language on CLDR lengthier than 3.\n\t\taux = unicodeLanguageId.match( /^(([a-z]{2,3})(-([A-Z][a-z]{3}))?(-([A-Z]{2}|[0-9]{3}))?)((-([a-zA-Z0-9]{5,8}|[0-9][a-zA-Z0-9]{3}))*)$|^(root)$/ );\n\t\tif ( aux === null ) {\n\t\t\treturn [ \"und\", \"Zzzz\", \"ZZ\" ];\n\t\t}\n\t\tsubtags[ 0 /* language */ ] = aux[ 10 ] /* root */ || aux[ 2 ] || \"und\";\n\t\tsubtags[ 1 /* script */ ] = aux[ 4 ] || \"Zzzz\";\n\t\tsubtags[ 2 /* territory */ ] = aux[ 6 ] || \"ZZ\";\n\t\tif ( aux[ 7 ] && aux[ 7 ].length ) {\n\t\t\tsubtags[ 3 /* variant */ ] = aux[ 7 ].slice( 1 ) /* remove leading \"-\" */;\n\t\t}\n\n\t\t// 0: language\n\t\t// 1: script\n\t\t// 2: territory (aka region)\n\t\t// 3: variant\n\t\t// 4: unicodeLocaleExtensions\n\t\treturn subtags;\n\t};\n\n\n\n\n\tvar arrayForEach = function( array, callback ) {\n\t\tvar i, length;\n\t\tif ( array.forEach ) {\n\t\t\treturn array.forEach( callback );\n\t\t}\n\t\tfor ( i = 0, length = array.length; i < length; i++ ) {\n\t\t\tcallback( array[ i ], i, array );\n\t\t}\n\t};\n\n\n\n\n\t/**\n\t * bundleLookup( minLanguageId )\n\t *\n\t * @Cldr [Cldr class]\n\t *\n\t * @cldr [Cldr instance]\n\t *\n\t * @minLanguageId [String] requested languageId after applied remove likely subtags.\n\t */\n\tvar bundleLookup = function( Cldr, cldr, minLanguageId ) {\n\t\tvar availableBundleMap = Cldr._availableBundleMap,\n\t\t\tavailableBundleMapQueue = Cldr._availableBundleMapQueue;\n\n\t\tif ( availableBundleMapQueue.length ) {\n\t\t\tarrayForEach( availableBundleMapQueue, function( bundle, i ) {\n\t\t\t\tvar existing, maxBundle, minBundle, subtags;\n\t\t\t\tsubtags = coreSubtags( bundle );\n\t\t\t\tmaxBundle = coreLikelySubtags( Cldr, cldr, subtags );\n\t\t\t\tif ( maxBundle === undefined ) {\n\t\t\t\t\tavailableBundleMapQueue.splice( i, 1 );\n\t\t\t\t\tthrow new Error( \"Could not find likelySubtags for \" + bundle );\n\t\t\t\t}\n\t\t\t\tminBundle = coreRemoveLikelySubtags( Cldr, cldr, maxBundle );\n\t\t\t\tminBundle = minBundle.join( Cldr.localeSep );\n\t\t\t\texisting = availableBundleMap[ minBundle ];\n\t\t\t\tif ( existing && existing.length < bundle.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tavailableBundleMap[ minBundle ] = bundle;\n\t\t\t});\n\t\t\tCldr._availableBundleMapQueue = [];\n\t\t}\n\n\t\treturn availableBundleMap[ minLanguageId ] || null;\n\t};\n\n\n\n\n\tvar objectKeys = function( object ) {\n\t\tvar i,\n\t\t\tresult = [];\n\n\t\tif ( Object.keys ) {\n\t\t\treturn Object.keys( object );\n\t\t}\n\n\t\tfor ( i in object ) {\n\t\t\tresult.push( i );\n\t\t}\n\n\t\treturn result;\n\t};\n\n\n\n\n\tvar createError = function( code, attributes ) {\n\t\tvar error, message;\n\n\t\tmessage = code + ( attributes && JSON ? \": \" + JSON.stringify( attributes ) : \"\" );\n\t\terror = new Error( message );\n\t\terror.code = code;\n\n\t\t// extend( error, attributes );\n\t\tarrayForEach( objectKeys( attributes ), function( attribute ) {\n\t\t\terror[ attribute ] = attributes[ attribute ];\n\t\t});\n\n\t\treturn error;\n\t};\n\n\n\n\n\tvar validate = function( code, check, attributes ) {\n\t\tif ( !check ) {\n\t\t\tthrow createError( code, attributes );\n\t\t}\n\t};\n\n\n\n\n\tvar validatePresence = function( value, name ) {\n\t\tvalidate( \"E_MISSING_PARAMETER\", typeof value !== \"undefined\", {\n\t\t\tname: name\n\t\t});\n\t};\n\n\n\n\n\tvar validateType = function( value, name, check, expected ) {\n\t\tvalidate( \"E_INVALID_PAR_TYPE\", check, {\n\t\t\texpected: expected,\n\t\t\tname: name,\n\t\t\tvalue: value\n\t\t});\n\t};\n\n\n\n\n\tvar validateTypePath = function( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"string\" || arrayIsArray( value ), \"String or Array\" );\n\t};\n\n\n\n\n\t/**\n\t * Function inspired by jQuery Core, but reduced to our use case.\n\t */\n\tvar isPlainObject = function( obj ) {\n\t\treturn obj !== null && \"\" + obj === \"[object Object]\";\n\t};\n\n\n\n\n\tvar validateTypePlainObject = function( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"undefined\" || isPlainObject( value ), \"Plain Object\" );\n\t};\n\n\n\n\n\tvar validateTypeString = function( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"string\", \"a string\" );\n\t};\n\n\n\n\n\t// @path: normalized path\n\tvar resourceGet = function( data, path ) {\n\t\tvar i,\n\t\t\tnode = data,\n\t\t\tlength = path.length;\n\n\t\tfor ( i = 0; i < length - 1; i++ ) {\n\t\t\tnode = node[ path[ i ] ];\n\t\t\tif ( !node ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\t\treturn node[ path[ i ] ];\n\t};\n\n\n\n\n\t/**\n\t * setAvailableBundles( Cldr, json )\n\t *\n\t * @Cldr [Cldr class]\n\t *\n\t * @json resolved/unresolved cldr data.\n\t *\n\t * Set available bundles queue based on passed json CLDR data. Considers a bundle as any String at /main/{bundle}.\n\t */\n\tvar coreSetAvailableBundles = function( Cldr, json ) {\n\t\tvar bundle,\n\t\t\tavailableBundleMapQueue = Cldr._availableBundleMapQueue,\n\t\t\tmain = resourceGet( json, [ \"main\" ] );\n\n\t\tif ( main ) {\n\t\t\tfor ( bundle in main ) {\n\t\t\t\tif ( main.hasOwnProperty( bundle ) && bundle !== \"root\" &&\n\t\t\t\t\t\t\tavailableBundleMapQueue.indexOf( bundle ) === -1 ) {\n\t\t\t\t\tavailableBundleMapQueue.push( bundle );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\n\n\tvar alwaysArray = function( somethingOrArray ) {\n\t\treturn arrayIsArray( somethingOrArray ) ? somethingOrArray : [ somethingOrArray ];\n\t};\n\n\n\tvar jsonMerge = (function() {\n\n\t// Returns new deeply merged JSON.\n\t//\n\t// Eg.\n\t// merge( { a: { b: 1, c: 2 } }, { a: { b: 3, d: 4 } } )\n\t// -> { a: { b: 3, c: 2, d: 4 } }\n\t//\n\t// @arguments JSON's\n\t// \n\tvar merge = function() {\n\t\tvar destination = {},\n\t\t\tsources = [].slice.call( arguments, 0 );\n\t\tarrayForEach( sources, function( source ) {\n\t\t\tvar prop;\n\t\t\tfor ( prop in source ) {\n\t\t\t\tif ( prop in destination && typeof destination[ prop ] === \"object\" && !arrayIsArray( destination[ prop ] ) ) {\n\n\t\t\t\t\t// Merge Objects\n\t\t\t\t\tdestination[ prop ] = merge( destination[ prop ], source[ prop ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Set new values\n\t\t\t\t\tdestination[ prop ] = source[ prop ];\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn destination;\n\t};\n\n\treturn merge;\n\n}());\n\n\n\t/**\n\t * load( Cldr, source, jsons )\n\t *\n\t * @Cldr [Cldr class]\n\t *\n\t * @source [Object]\n\t *\n\t * @jsons [arguments]\n\t */\n\tvar coreLoad = function( Cldr, source, jsons ) {\n\t\tvar i, j, json;\n\n\t\tvalidatePresence( jsons[ 0 ], \"json\" );\n\n\t\t// Support arbitrary parameters, e.g., `Cldr.load({...}, {...})`.\n\t\tfor ( i = 0; i < jsons.length; i++ ) {\n\n\t\t\t// Support array parameters, e.g., `Cldr.load([{...}, {...}])`.\n\t\t\tjson = alwaysArray( jsons[ i ] );\n\n\t\t\tfor ( j = 0; j < json.length; j++ ) {\n\t\t\t\tvalidateTypePlainObject( json[ j ], \"json\" );\n\t\t\t\tsource = jsonMerge( source, json[ j ] );\n\t\t\t\tcoreSetAvailableBundles( Cldr, json[ j ] );\n\t\t\t}\n\t\t}\n\n\t\treturn source;\n\t};\n\n\n\n\tvar itemGetResolved = function( Cldr, path, attributes ) {\n\t\t// Resolve path\n\t\tvar normalizedPath = pathNormalize( path, attributes );\n\n\t\treturn resourceGet( Cldr._resolved, normalizedPath );\n\t};\n\n\n\n\n\t/**\n\t * new Cldr()\n\t */\n\tvar Cldr = function( locale ) {\n\t\tthis.init( locale );\n\t};\n\n\t// Build optimization hack to avoid duplicating functions across modules.\n\tCldr._alwaysArray = alwaysArray;\n\tCldr._coreLoad = coreLoad;\n\tCldr._createError = createError;\n\tCldr._itemGetResolved = itemGetResolved;\n\tCldr._jsonMerge = jsonMerge;\n\tCldr._pathNormalize = pathNormalize;\n\tCldr._resourceGet = resourceGet;\n\tCldr._validatePresence = validatePresence;\n\tCldr._validateType = validateType;\n\tCldr._validateTypePath = validateTypePath;\n\tCldr._validateTypePlainObject = validateTypePlainObject;\n\n\tCldr._availableBundleMap = {};\n\tCldr._availableBundleMapQueue = [];\n\tCldr._resolved = {};\n\n\t// Allow user to override locale separator \"-\" (default) | \"_\". According to http://www.unicode.org/reports/tr35/#Unicode_language_identifier, both \"-\" and \"_\" are valid locale separators (eg. \"en_GB\", \"en-GB\"). According to http://unicode.org/cldr/trac/ticket/6786 its usage must be consistent throughout the data set.\n\tCldr.localeSep = \"-\";\n\n\t/**\n\t * Cldr.load( json [, json, ...] )\n\t *\n\t * @json [JSON] CLDR data or [Array] Array of @json's.\n\t *\n\t * Load resolved cldr data.\n\t */\n\tCldr.load = function() {\n\t\tCldr._resolved = coreLoad( Cldr, Cldr._resolved, arguments );\n\t};\n\n\t/**\n\t * .init() automatically run on instantiation/construction.\n\t */\n\tCldr.prototype.init = function( locale ) {\n\t\tvar attributes, language, maxLanguageId, minLanguageId, script, subtags, territory, unicodeLocaleExtensions, variant,\n\t\t\tsep = Cldr.localeSep,\n\t\t\tunicodeLocaleExtensionsRaw = \"\";\n\n\t\tvalidatePresence( locale, \"locale\" );\n\t\tvalidateTypeString( locale, \"locale\" );\n\n\t\tsubtags = coreSubtags( locale );\n\n\t\tif ( subtags.length === 5 ) {\n\t\t\tunicodeLocaleExtensions = subtags.pop();\n\t\t\tunicodeLocaleExtensionsRaw = sep + \"u\" + sep + unicodeLocaleExtensions;\n\t\t\t// Remove trailing null when there is unicodeLocaleExtensions but no variants.\n\t\t\tif ( !subtags[ 3 ] ) {\n\t\t\t\tsubtags.pop();\n\t\t\t}\n\t\t}\n\t\tvariant = subtags[ 3 ];\n\n\t\t// Normalize locale code.\n\t\t// Get (or deduce) the \"triple subtags\": language, territory (also aliased as region), and script subtags.\n\t\t// Get the variant subtags (calendar, collation, currency, etc).\n\t\t// refs:\n\t\t// - http://www.unicode.org/reports/tr35/#Field_Definitions\n\t\t// - http://www.unicode.org/reports/tr35/#Language_and_Locale_IDs\n\t\t// - http://www.unicode.org/reports/tr35/#Unicode_locale_identifier\n\n\t\t// When a locale id does not specify a language, or territory (region), or script, they are obtained by Likely Subtags.\n\t\tmaxLanguageId = coreLikelySubtags( Cldr, this, subtags, { force: true } ) || subtags;\n\t\tlanguage = maxLanguageId[ 0 ];\n\t\tscript = maxLanguageId[ 1 ];\n\t\tterritory = maxLanguageId[ 2 ];\n\n\t\tminLanguageId = coreRemoveLikelySubtags( Cldr, this, maxLanguageId ).join( sep );\n\n\t\t// Set attributes\n\t\tthis.attributes = attributes = {\n\t\t\tbundle: bundleLookup( Cldr, this, minLanguageId ),\n\n\t\t\t// Unicode Language Id\n\t\t\tminLanguageId: minLanguageId + unicodeLocaleExtensionsRaw,\n\t\t\tmaxLanguageId: maxLanguageId.join( sep ) + unicodeLocaleExtensionsRaw,\n\n\t\t\t// Unicode Language Id Subtabs\n\t\t\tlanguage: language,\n\t\t\tscript: script,\n\t\t\tterritory: territory,\n\t\t\tregion: territory, /* alias */\n\t\t\tvariant: variant\n\t\t};\n\n\t\t// Unicode locale extensions.\n\t\tunicodeLocaleExtensions && ( \"-\" + unicodeLocaleExtensions ).replace( /-[a-z]{3,8}|(-[a-z]{2})-([a-z]{3,8})/g, function( attribute, key, type ) {\n\n\t\t\tif ( key ) {\n\n\t\t\t\t// Extension is in the `keyword` form.\n\t\t\t\tattributes[ \"u\" + key ] = type;\n\t\t\t} else {\n\n\t\t\t\t// Extension is in the `attribute` form.\n\t\t\t\tattributes[ \"u\" + attribute ] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.locale = locale;\n\t};\n\n\t/**\n\t * .get()\n\t */\n\tCldr.prototype.get = function( path ) {\n\n\t\tvalidatePresence( path, \"path\" );\n\t\tvalidateTypePath( path, \"path\" );\n\n\t\treturn itemGetResolved( Cldr, path, this.attributes );\n\t};\n\n\t/**\n\t * .main()\n\t */\n\tCldr.prototype.main = function( path ) {\n\t\tvalidatePresence( path, \"path\" );\n\t\tvalidateTypePath( path, \"path\" );\n\n\t\tvalidate( \"E_MISSING_BUNDLE\", this.attributes.bundle !== null, {\n\t\t\tlocale: this.locale\n\t\t});\n\n\t\tpath = alwaysArray( path );\n\t\treturn this.get( [ \"main/{bundle}\" ].concat( path ) );\n\t};\n\n\treturn Cldr;\n\n\n\n\n}));\n","/**\n * CLDR JavaScript Library v0.5.4\n * http://jquery.com/\n *\n * Copyright 2013 Rafael Xavier de Souza\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2020-10-22T15:56Z\n */\n/*!\n * CLDR JavaScript Library v0.5.4 2020-10-22T15:56Z MIT license © Rafael Xavier\n * http://git.io/h4lmVg\n */\n(function( factory ) {\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD.\n\t\tdefine( [ \"../cldr\" ], factory );\n\t} else if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// Node. CommonJS.\n\t\tmodule.exports = factory( require( \"../cldr\" ) );\n\t} else {\n\t\t// Global\n\t\tfactory( Cldr );\n\t}\n\n}(function( Cldr ) {\n\n\t// Build optimization hack to avoid duplicating functions across modules.\n\tvar pathNormalize = Cldr._pathNormalize,\n\t\tvalidatePresence = Cldr._validatePresence,\n\t\tvalidateType = Cldr._validateType;\n\n/*!\n * EventEmitter v4.2.7 - git.io/ee\n * Oliver Caldwell\n * MIT license\n * @preserve\n */\n\nvar EventEmitter;\n/* jshint ignore:start */\nEventEmitter = (function () {\n\n\n\t/**\n\t * Class for managing events.\n\t * Can be extended to provide event functionality in other classes.\n\t *\n\t * @class EventEmitter Manages event registering and emitting.\n\t */\n\tfunction EventEmitter() {}\n\n\t// Shortcuts to improve speed and size\n\tvar proto = EventEmitter.prototype;\n\tvar exports = {};\n\t\n\n\t/**\n\t * Finds the index of the listener for the event in it's storage array.\n\t *\n\t * @param {Function[]} listeners Array of listeners to search through.\n\t * @param {Function} listener Method to look for.\n\t * @return {Number} Index of the specified listener, -1 if not found\n\t * @api private\n\t */\n\tfunction indexOfListener(listeners, listener) {\n\t\tvar i = listeners.length;\n\t\twhile (i--) {\n\t\t\tif (listeners[i].listener === listener) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\n\t/**\n\t * Alias a method while keeping the context correct, to allow for overwriting of target method.\n\t *\n\t * @param {String} name The name of the target method.\n\t * @return {Function} The aliased method\n\t * @api private\n\t */\n\tfunction alias(name) {\n\t\treturn function aliasClosure() {\n\t\t\treturn this[name].apply(this, arguments);\n\t\t};\n\t}\n\n\t/**\n\t * Returns the listener array for the specified event.\n\t * Will initialise the event object and listener arrays if required.\n\t * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n\t * Each property in the object response is an array of listener functions.\n\t *\n\t * @param {String|RegExp} evt Name of the event to return the listeners from.\n\t * @return {Function[]|Object} All listener functions for the event.\n\t */\n\tproto.getListeners = function getListeners(evt) {\n\t\tvar events = this._getEvents();\n\t\tvar response;\n\t\tvar key;\n\n\t\t// Return a concatenated array of all matching events if\n\t\t// the selector is a regular expression.\n\t\tif (evt instanceof RegExp) {\n\t\t\tresponse = {};\n\t\t\tfor (key in events) {\n\t\t\t\tif (events.hasOwnProperty(key) && evt.test(key)) {\n\t\t\t\t\tresponse[key] = events[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tresponse = events[evt] || (events[evt] = []);\n\t\t}\n\n\t\treturn response;\n\t};\n\n\t/**\n\t * Takes a list of listener objects and flattens it into a list of listener functions.\n\t *\n\t * @param {Object[]} listeners Raw listener objects.\n\t * @return {Function[]} Just the listener functions.\n\t */\n\tproto.flattenListeners = function flattenListeners(listeners) {\n\t\tvar flatListeners = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < listeners.length; i += 1) {\n\t\t\tflatListeners.push(listeners[i].listener);\n\t\t}\n\n\t\treturn flatListeners;\n\t};\n\n\t/**\n\t * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n\t *\n\t * @param {String|RegExp} evt Name of the event to return the listeners from.\n\t * @return {Object} All listener functions for an event in an object.\n\t */\n\tproto.getListenersAsObject = function getListenersAsObject(evt) {\n\t\tvar listeners = this.getListeners(evt);\n\t\tvar response;\n\n\t\tif (listeners instanceof Array) {\n\t\t\tresponse = {};\n\t\t\tresponse[evt] = listeners;\n\t\t}\n\n\t\treturn response || listeners;\n\t};\n\n\t/**\n\t * Adds a listener function to the specified event.\n\t * The listener will not be added if it is a duplicate.\n\t * If the listener returns true then it will be removed after it is called.\n\t * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n\t *\n\t * @param {String|RegExp} evt Name of the event to attach the listener to.\n\t * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.addListener = function addListener(evt, listener) {\n\t\tvar listeners = this.getListenersAsObject(evt);\n\t\tvar listenerIsWrapped = typeof listener === 'object';\n\t\tvar key;\n\n\t\tfor (key in listeners) {\n\t\t\tif (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n\t\t\t\tlisteners[key].push(listenerIsWrapped ? listener : {\n\t\t\t\t\tlistener: listener,\n\t\t\t\t\tonce: false\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Alias of addListener\n\t */\n\tproto.on = alias('addListener');\n\n\t/**\n\t * Semi-alias of addListener. It will add a listener that will be\n\t * automatically removed after it's first execution.\n\t *\n\t * @param {String|RegExp} evt Name of the event to attach the listener to.\n\t * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.addOnceListener = function addOnceListener(evt, listener) {\n\t\treturn this.addListener(evt, {\n\t\t\tlistener: listener,\n\t\t\tonce: true\n\t\t});\n\t};\n\n\t/**\n\t * Alias of addOnceListener.\n\t */\n\tproto.once = alias('addOnceListener');\n\n\t/**\n\t * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n\t * You need to tell it what event names should be matched by a regex.\n\t *\n\t * @param {String} evt Name of the event to create.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.defineEvent = function defineEvent(evt) {\n\t\tthis.getListeners(evt);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Uses defineEvent to define multiple events.\n\t *\n\t * @param {String[]} evts An array of event names to define.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.defineEvents = function defineEvents(evts) {\n\t\tfor (var i = 0; i < evts.length; i += 1) {\n\t\t\tthis.defineEvent(evts[i]);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Removes a listener function from the specified event.\n\t * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n\t *\n\t * @param {String|RegExp} evt Name of the event to remove the listener from.\n\t * @param {Function} listener Method to remove from the event.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.removeListener = function removeListener(evt, listener) {\n\t\tvar listeners = this.getListenersAsObject(evt);\n\t\tvar index;\n\t\tvar key;\n\n\t\tfor (key in listeners) {\n\t\t\tif (listeners.hasOwnProperty(key)) {\n\t\t\t\tindex = indexOfListener(listeners[key], listener);\n\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tlisteners[key].splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Alias of removeListener\n\t */\n\tproto.off = alias('removeListener');\n\n\t/**\n\t * Adds listeners in bulk using the manipulateListeners method.\n\t * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n\t * You can also pass it a regular expression to add the array of listeners to all events that match it.\n\t * Yeah, this function does quite a bit. That's probably a bad thing.\n\t *\n\t * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n\t * @param {Function[]} [listeners] An optional array of listener functions to add.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.addListeners = function addListeners(evt, listeners) {\n\t\t// Pass through to manipulateListeners\n\t\treturn this.manipulateListeners(false, evt, listeners);\n\t};\n\n\t/**\n\t * Removes listeners in bulk using the manipulateListeners method.\n\t * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n\t * You can also pass it an event name and an array of listeners to be removed.\n\t * You can also pass it a regular expression to remove the listeners from all events that match it.\n\t *\n\t * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n\t * @param {Function[]} [listeners] An optional array of listener functions to remove.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.removeListeners = function removeListeners(evt, listeners) {\n\t\t// Pass through to manipulateListeners\n\t\treturn this.manipulateListeners(true, evt, listeners);\n\t};\n\n\t/**\n\t * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n\t * The first argument will determine if the listeners are removed (true) or added (false).\n\t * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n\t * You can also pass it an event name and an array of listeners to be added/removed.\n\t * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n\t *\n\t * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n\t * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n\t * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n\t\tvar i;\n\t\tvar value;\n\t\tvar single = remove ? this.removeListener : this.addListener;\n\t\tvar multiple = remove ? this.removeListeners : this.addListeners;\n\n\t\t// If evt is an object then pass each of it's properties to this method\n\t\tif (typeof evt === 'object' && !(evt instanceof RegExp)) {\n\t\t\tfor (i in evt) {\n\t\t\t\tif (evt.hasOwnProperty(i) && (value = evt[i])) {\n\t\t\t\t\t// Pass the single listener straight through to the singular method\n\t\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\t\tsingle.call(this, i, value);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Otherwise pass back to the multiple function\n\t\t\t\t\t\tmultiple.call(this, i, value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// So evt must be a string\n\t\t\t// And listeners must be an array of listeners\n\t\t\t// Loop over it and pass each one to the multiple method\n\t\t\ti = listeners.length;\n\t\t\twhile (i--) {\n\t\t\t\tsingle.call(this, evt, listeners[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Removes all listeners from a specified event.\n\t * If you do not specify an event then all listeners will be removed.\n\t * That means every event will be emptied.\n\t * You can also pass a regex to remove all events that match it.\n\t *\n\t * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.removeEvent = function removeEvent(evt) {\n\t\tvar type = typeof evt;\n\t\tvar events = this._getEvents();\n\t\tvar key;\n\n\t\t// Remove different things depending on the state of evt\n\t\tif (type === 'string') {\n\t\t\t// Remove all listeners for the specified event\n\t\t\tdelete events[evt];\n\t\t}\n\t\telse if (evt instanceof RegExp) {\n\t\t\t// Remove all events matching the regex.\n\t\t\tfor (key in events) {\n\t\t\t\tif (events.hasOwnProperty(key) && evt.test(key)) {\n\t\t\t\t\tdelete events[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Remove all listeners in all events\n\t\t\tdelete this._events;\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Alias of removeEvent.\n\t *\n\t * Added to mirror the node API.\n\t */\n\tproto.removeAllListeners = alias('removeEvent');\n\n\t/**\n\t * Emits an event of your choice.\n\t * When emitted, every listener attached to that event will be executed.\n\t * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n\t * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n\t * So they will not arrive within the array on the other side, they will be separate.\n\t * You can also pass a regular expression to emit to all events that match it.\n\t *\n\t * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n\t * @param {Array} [args] Optional array of arguments to be passed to each listener.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.emitEvent = function emitEvent(evt, args) {\n\t\tvar listeners = this.getListenersAsObject(evt);\n\t\tvar listener;\n\t\tvar i;\n\t\tvar key;\n\t\tvar response;\n\n\t\tfor (key in listeners) {\n\t\t\tif (listeners.hasOwnProperty(key)) {\n\t\t\t\ti = listeners[key].length;\n\n\t\t\t\twhile (i--) {\n\t\t\t\t\t// If the listener returns true then it shall be removed from the event\n\t\t\t\t\t// The function is executed either with a basic call or an apply if there is an args array\n\t\t\t\t\tlistener = listeners[key][i];\n\n\t\t\t\t\tif (listener.once === true) {\n\t\t\t\t\t\tthis.removeListener(evt, listener.listener);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = listener.listener.apply(this, args || []);\n\n\t\t\t\t\tif (response === this._getOnceReturnValue()) {\n\t\t\t\t\t\tthis.removeListener(evt, listener.listener);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n\n\t/**\n\t * Alias of emitEvent\n\t */\n\tproto.trigger = alias('emitEvent');\n\n\t/**\n\t * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n\t * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n\t *\n\t * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n\t * @param {...*} Optional additional arguments to be passed to each listener.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.emit = function emit(evt) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\t\treturn this.emitEvent(evt, args);\n\t};\n\n\t/**\n\t * Sets the current value to check against when executing listeners. If a\n\t * listeners return value matches the one set here then it will be removed\n\t * after execution. This value defaults to true.\n\t *\n\t * @param {*} value The new value to check for when executing listeners.\n\t * @return {Object} Current instance of EventEmitter for chaining.\n\t */\n\tproto.setOnceReturnValue = function setOnceReturnValue(value) {\n\t\tthis._onceReturnValue = value;\n\t\treturn this;\n\t};\n\n\t/**\n\t * Fetches the current value to check against when executing listeners. If\n\t * the listeners return value matches this one then it should be removed\n\t * automatically. It will return true by default.\n\t *\n\t * @return {*|Boolean} The current value to check for or the default, true.\n\t * @api private\n\t */\n\tproto._getOnceReturnValue = function _getOnceReturnValue() {\n\t\tif (this.hasOwnProperty('_onceReturnValue')) {\n\t\t\treturn this._onceReturnValue;\n\t\t}\n\t\telse {\n\t\t\treturn true;\n\t\t}\n\t};\n\n\t/**\n\t * Fetches the events object and creates one if required.\n\t *\n\t * @return {Object} The events storage object.\n\t * @api private\n\t */\n\tproto._getEvents = function _getEvents() {\n\t\treturn this._events || (this._events = {});\n\t};\n\n\t/**\n\t * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n\t *\n\t * @return {Function} Non conflicting EventEmitter class.\n\t */\n\tEventEmitter.noConflict = function noConflict() {\n\t\texports.EventEmitter = originalGlobalValue;\n\t\treturn EventEmitter;\n\t};\n\n\treturn EventEmitter;\n}());\n/* jshint ignore:end */\n\n\n\n\tvar validateTypeFunction = function( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"undefined\" || typeof value === \"function\", \"Function\" );\n\t};\n\n\n\n\n\tvar superGet, superInit,\n\t\tglobalEe = new EventEmitter();\n\n\tfunction validateTypeEvent( value, name ) {\n\t\tvalidateType( value, name, typeof value === \"string\" || value instanceof RegExp, \"String or RegExp\" );\n\t}\n\n\tfunction validateThenCall( method, self ) {\n\t\treturn function( event, listener ) {\n\t\t\tvalidatePresence( event, \"event\" );\n\t\t\tvalidateTypeEvent( event, \"event\" );\n\n\t\t\tvalidatePresence( listener, \"listener\" );\n\t\t\tvalidateTypeFunction( listener, \"listener\" );\n\n\t\t\treturn self[ method ].apply( self, arguments );\n\t\t};\n\t}\n\n\tfunction off( self ) {\n\t\treturn validateThenCall( \"off\", self );\n\t}\n\n\tfunction on( self ) {\n\t\treturn validateThenCall( \"on\", self );\n\t}\n\n\tfunction once( self ) {\n\t\treturn validateThenCall( \"once\", self );\n\t}\n\n\tCldr.off = off( globalEe );\n\tCldr.on = on( globalEe );\n\tCldr.once = once( globalEe );\n\n\t/**\n\t * Overload Cldr.prototype.init().\n\t */\n\tsuperInit = Cldr.prototype.init;\n\tCldr.prototype.init = function() {\n\t\tvar ee;\n\t\tthis.ee = ee = new EventEmitter();\n\t\tthis.off = off( ee );\n\t\tthis.on = on( ee );\n\t\tthis.once = once( ee );\n\t\tsuperInit.apply( this, arguments );\n\t};\n\n\t/**\n\t * getOverload is encapsulated, because of cldr/unresolved. If it's loaded\n\t * after cldr/event (and note it overwrites .get), it can trigger this\n\t * overload again.\n\t */\n\tfunction getOverload() {\n\n\t\t/**\n\t\t * Overload Cldr.prototype.get().\n\t\t */\n\t\tsuperGet = Cldr.prototype.get;\n\t\tCldr.prototype.get = function( path ) {\n\t\t\tvar value = superGet.apply( this, arguments );\n\t\t\tpath = pathNormalize( path, this.attributes ).join( \"/\" );\n\t\t\tglobalEe.trigger( \"get\", [ path, value ] );\n\t\t\tthis.ee.trigger( \"get\", [ path, value ] );\n\t\t\treturn value;\n\t\t};\n\t}\n\n\tCldr._eventInit = getOverload;\n\tgetOverload();\n\n\treturn Cldr;\n\n\n\n\n}));\n","/**\n * CLDR JavaScript Library v0.5.4\n * http://jquery.com/\n *\n * Copyright 2013 Rafael Xavier de Souza\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2020-10-22T15:56Z\n */\n/*!\n * CLDR JavaScript Library v0.5.4 2020-10-22T15:56Z MIT license © Rafael Xavier\n * http://git.io/h4lmVg\n */\n(function( factory ) {\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD.\n\t\tdefine( [ \"../cldr\" ], factory );\n\t} else if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// Node. CommonJS.\n\t\tmodule.exports = factory( require( \"../cldr\" ) );\n\t} else {\n\t\t// Global\n\t\tfactory( Cldr );\n\t}\n\n}(function( Cldr ) {\n\n\t// Build optimization hack to avoid duplicating functions across modules.\n\tvar alwaysArray = Cldr._alwaysArray;\n\n\n\n\tvar supplementalMain = function( cldr ) {\n\n\t\tvar prepend, supplemental;\n\t\t\n\t\tprepend = function( prepend ) {\n\t\t\treturn function( path ) {\n\t\t\t\tpath = alwaysArray( path );\n\t\t\t\treturn cldr.get( [ prepend ].concat( path ) );\n\t\t\t};\n\t\t};\n\n\t\tsupplemental = prepend( \"supplemental\" );\n\n\t\t// Week Data\n\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Week_Data\n\t\tsupplemental.weekData = prepend( \"supplemental/weekData\" );\n\n\t\tsupplemental.weekData.firstDay = function() {\n\t\t\treturn cldr.get( \"supplemental/weekData/firstDay/{territory}\" ) ||\n\t\t\t\tcldr.get( \"supplemental/weekData/firstDay/001\" );\n\t\t};\n\n\t\tsupplemental.weekData.minDays = function() {\n\t\t\tvar minDays = cldr.get( \"supplemental/weekData/minDays/{territory}\" ) ||\n\t\t\t\tcldr.get( \"supplemental/weekData/minDays/001\" );\n\t\t\treturn parseInt( minDays, 10 );\n\t\t};\n\n\t\t// Time Data\n\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n\t\tsupplemental.timeData = prepend( \"supplemental/timeData\" );\n\n\t\tsupplemental.timeData.allowed = function() {\n\t\t\treturn cldr.get( \"supplemental/timeData/{territory}/_allowed\" ) ||\n\t\t\t\tcldr.get( \"supplemental/timeData/001/_allowed\" );\n\t\t};\n\n\t\tsupplemental.timeData.preferred = function() {\n\t\t\treturn cldr.get( \"supplemental/timeData/{territory}/_preferred\" ) ||\n\t\t\t\tcldr.get( \"supplemental/timeData/001/_preferred\" );\n\t\t};\n\n\t\treturn supplemental;\n\n\t};\n\n\n\n\n\tvar initSuper = Cldr.prototype.init;\n\n\t/**\n\t * .init() automatically ran on construction.\n\t *\n\t * Overload .init().\n\t */\n\tCldr.prototype.init = function() {\n\t\tinitSuper.apply( this, arguments );\n\t\tthis.supplemental = supplementalMain( this );\n\t};\n\n\treturn Cldr;\n\n\n\n\n}));\n","/**\n * CLDR JavaScript Library v0.5.4\n * http://jquery.com/\n *\n * Copyright 2013 Rafael Xavier de Souza\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2020-10-22T15:56Z\n */\n/*!\n * CLDR JavaScript Library v0.5.4 2020-10-22T15:56Z MIT license © Rafael Xavier\n * http://git.io/h4lmVg\n */\n(function( factory ) {\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD.\n\t\tdefine( [ \"../cldr\" ], factory );\n\t} else if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// Node. CommonJS.\n\t\tmodule.exports = factory( require( \"../cldr\" ) );\n\t} else {\n\t\t// Global\n\t\tfactory( Cldr );\n\t}\n\n}(function( Cldr ) {\n\n\t// Build optimization hack to avoid duplicating functions across modules.\n\tvar coreLoad = Cldr._coreLoad;\n\tvar jsonMerge = Cldr._jsonMerge;\n\tvar pathNormalize = Cldr._pathNormalize;\n\tvar resourceGet = Cldr._resourceGet;\n\tvar validatePresence = Cldr._validatePresence;\n\tvar validateTypePath = Cldr._validateTypePath;\n\n\n\n\tvar bundleParentLookup = function( Cldr, locale ) {\n\t\tvar normalizedPath, parent;\n\n\t\tif ( locale === \"root\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// First, try to find parent on supplemental data.\n\t\tnormalizedPath = pathNormalize( [ \"supplemental/parentLocales/parentLocale\", locale ] );\n\t\tparent = resourceGet( Cldr._resolved, normalizedPath ) || resourceGet( Cldr._raw, normalizedPath );\n\t\tif ( parent ) {\n\t\t\treturn parent;\n\t\t}\n\n\t\t// Or truncate locale.\n\t\tparent = locale.substr( 0, locale.lastIndexOf( Cldr.localeSep ) );\n\t\tif ( !parent ) {\n\t\t\treturn \"root\";\n\t\t}\n\n\t\treturn parent;\n\t};\n\n\n\n\n\t// @path: normalized path\n\tvar resourceSet = function( data, path, value ) {\n\t\tvar i,\n\t\t\tnode = data,\n\t\t\tlength = path.length;\n\n\t\tfor ( i = 0; i < length - 1; i++ ) {\n\t\t\tif ( !node[ path[ i ] ] ) {\n\t\t\t\tnode[ path[ i ] ] = {};\n\t\t\t}\n\t\t\tnode = node[ path[ i ] ];\n\t\t}\n\t\tnode[ path[ i ] ] = value;\n\t};\n\n\n\tvar itemLookup = (function() {\n\n\tvar lookup;\n\n\tlookup = function( Cldr, locale, path, attributes, childLocale ) {\n\t\tvar normalizedPath, parent, value;\n\n\t\t// 1: Finish recursion\n\t\t// 2: Avoid infinite loop\n\t\tif ( typeof locale === \"undefined\" /* 1 */ || locale === childLocale /* 2 */ ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Resolve path\n\t\tnormalizedPath = pathNormalize( path, attributes );\n\n\t\t// Check resolved (cached) data first\n\t\t// 1: Due to #16, never use the cached resolved non-leaf nodes. It may not\n\t\t// represent its leafs in its entirety.\n\t\tvalue = resourceGet( Cldr._resolved, normalizedPath );\n\t\tif ( value !== undefined && typeof value !== \"object\" /* 1 */ ) {\n\t\t\treturn value;\n\t\t}\n\n\t\t// Check raw data\n\t\tvalue = resourceGet( Cldr._raw, normalizedPath );\n\n\t\tif ( value === undefined ) {\n\t\t\t// Or, lookup at parent locale\n\t\t\tparent = bundleParentLookup( Cldr, locale );\n\t\t\tvalue = lookup( Cldr, parent, path, jsonMerge( attributes, { bundle: parent }), locale );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\t// Set resolved (cached)\n\t\t\tresourceSet( Cldr._resolved, normalizedPath, value );\n\t\t}\n\n\t\treturn value;\n\t};\n\n\treturn lookup;\n\n}());\n\n\n\tCldr._raw = {};\n\n\t/**\n\t * Cldr.load( json [, json, ...] )\n\t *\n\t * @json [JSON] CLDR data or [Array] Array of @json's.\n\t *\n\t * Load resolved or unresolved cldr data.\n\t * Overwrite Cldr.load().\n\t */\n\tCldr.load = function() {\n\t\tCldr._raw = coreLoad( Cldr, Cldr._raw, arguments );\n\t};\n\n\t/**\n\t * Overwrite Cldr.prototype.get().\n\t */\n\tCldr.prototype.get = function( path ) {\n\t\tvalidatePresence( path, \"path\" );\n\t\tvalidateTypePath( path, \"path\" );\n\n\t\t// 1: use bundle as locale on item lookup for simplification purposes, because no other extended subtag is used anyway on bundle parent lookup.\n\t\t// 2: during init(), this method is called, but bundle is yet not defined. Use \"\" as a workaround in this very specific scenario.\n\t\treturn itemLookup( Cldr, this.attributes && this.attributes.bundle /* 1 */ || \"\" /* 2 */, path, this.attributes );\n\t};\n\n\t// In case cldr/unresolved is loaded after cldr/event, we trigger its overloads again. Because, .get is overwritten in here.\n\tif ( Cldr._eventInit ) {\n\t\tCldr._eventInit();\n\t}\n\n\treturn Cldr;\n\n\n\n\n}));\n","/**\n * CLDR JavaScript Library v0.5.4\n * http://jquery.com/\n *\n * Copyright 2013 Rafael Xavier de Souza\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2020-10-22T15:56Z\n */\n/*!\n * CLDR JavaScript Library v0.5.4 2020-10-22T15:56Z MIT license © Rafael Xavier\n * http://git.io/h4lmVg\n */\n\n// Cldr\nmodule.exports = require( \"./cldr\" );\n\n// Extent Cldr with the following modules\nrequire( \"./cldr/event\" );\nrequire( \"./cldr/supplemental\" );\nrequire( \"./cldr/unresolved\" );\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n anObject(this);\n if (hint === 'string' || hint === 'default') hint = 'string';\n else if (hint !== 'number') throw TypeError('Incorrect hint');\n return ordinaryToPrimitive(this, hint);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(it) : usingIterator;\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var $ = require('../internals/export');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = [].splice;\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice.call(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return typeof $Symbol == 'function' && Object(it) instanceof $Symbol;\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'return', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = iterator['return'];\n if (innerResult === undefined) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = innerResult.call(iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (pref !== 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = patchedExec.call(raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = str.slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.16.4',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var toInteger = require('../internals/to-integer');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.codePointAt` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = input[TO_PRIMITIVE];\n var result;\n if (exoticToPrim !== undefined) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var isSymbol = require('../internals/is-symbol');\n\nmodule.exports = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!(TO_PRIMITIVE in DatePrototype)) {\n createNonEnumerableProperty(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a number');\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = string.charAt(index);\n if (chr === '\\\\') {\n result += chr + string.charAt(++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = string.charAt(index);\n if (chr === '\\\\') {\n chr = chr + string.charAt(++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (IS_NCG.test(string.slice(index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || has(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named.push([groupname, groupid]);\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || pattern instanceof RegExpWrapper) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags.call(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && flags.indexOf('s') > -1;\n if (dotAll) flags = flags.replace(/s/g, '');\n }\n\n rawFlags = flags;\n\n if (UNSUPPORTED_Y && 'sticky' in re1) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxy(keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModule = require('../internals/object-define-property');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar FORCED = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) objectDefinePropertyModule.f(RegExp.prototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue === 'string' &&\n replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&\n replaceValue.indexOf('$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = toString(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar aa=this||self;function h(a,b){function c(){}c.prototype=b.prototype;a.qa=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.wa=function(d,e,f){for(var g=Array(arguments.length-2),k=2;ka.length?!1:K(Sa,a)}function Wa(a){return K(Na,a)?Xa(a,Ha):Xa(a,Fa)}function Ya(a){var b=Wa(a.toString());n(a);a.g(b)}function Za(){return Object.keys(Ea).filter(function(a){return isNaN(a)})}function $a(a){return null!=a&&(1!=x(a,9)||-1!=u(a,9)[0])}function Xa(a,b){for(var c=new l,d,e=a.length,f=0;fb?2:f[f.length-1]=e&&e<=d;++e)if(c=parseInt(a.substring(0,e),10),c in F)return b.g(a.substring(e)),c;return 0}\nfunction kb(a,b,c,d,e){if(0==b.length)return 0;b=new l(b);var f;null!=c&&(f=r(c,11));null==f&&(f=\"NonMatch\");var g=b.toString();if(0==g.length)f=20;else if(I.test(g))g=g.replace(I,\"\"),n(b),b.g(Wa(g)),f=1;else{g=new RegExp(f);Ya(b);f=b.toString();if(0==f.search(g)){g=f.match(g)[0].length;var k=f.substring(g).match(Ja);k&&null!=k[1]&&0=b.h.length)throw Error(\"Phone number too short after IDD\");a=jb(b,\nd);if(0!=a)return t(e,1,a),a;throw Error(\"Invalid country calling code\");}if(null!=c&&(f=w(c,10),g=\"\"+f,k=b.toString(),0==k.lastIndexOf(g,0)&&(g=new l(k.substring(g.length)),k=r(c,1),k=new RegExp(w(k,2)),lb(g,c,null),g=g.toString(),!K(k,b.toString())&&K(k,g)||3==hb(a,b.toString(),c,-1))))return d.g(g),t(e,1,f),f;t(e,1,0);return 0}\nfunction lb(a,b,c){var d=a.toString(),e=d.length,f=r(b,15);if(0!=e&&null!=f&&0!=f.length){var g=new RegExp(\"^(?:\"+f+\")\");if(e=g.exec(d)){f=new RegExp(w(r(b,1),2));var k=K(f,d),m=e.length-1;b=r(b,16);if(null==b||0==b.length||null==e[m]||0==e[m].length){if(!k||K(f,d.substring(e[0].length)))null!=c&&0=b.length)e=\"\";else{var f=b.indexOf(\";\",e);e=-1!==f?b.substring(e,f):b.substring(e)}var g=e;null==g?f=!0:0===g.length?f=!1:(f=Oa.exec(g),g=Pa.exec(g),f=null!==f||null!==g);if(!f)throw Error(\"The string supplied did not seem to be a phone number\");\nnull!=e?(\"+\"===e.charAt(0)&&d.g(e),e=b.indexOf(\"tel:\"),d.g(b.substring(0<=e?e+4:0,b.indexOf(\";phone-context=\")))):(e=d.g,b=b??\"\",f=b.search(Ka),0<=f?(b=b.substring(f),b=b.replace(Ma,\"\"),f=b.search(La),0<=f&&(b=b.substring(0,f))):b=\"\",e.call(d,b));b=d.toString();e=b.indexOf(\";isub=\");0e.h.length)throw Error(\"The string supplied is too short to be a phone number\");\nnull!=f&&(c=new l(e.toString()),lb(c,f,new l),a=hb(a,c.toString(),f,-1),2!=a&&4!=a&&5!=a&&(e=c));a=e.toString();c=a.length;if(2>c)throw Error(\"The string supplied is too short to be a phone number\");if(17\", {\n * name: \"Foo\",\n * email: \"bar@baz.qux\"\n * }); // Foo \n */\nvar formatMessage = function( message, data ) {\n\n\t// Replace {attribute}'s\n\tmessage = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) {\n\t\tname = name.replace( /^{([^}]*)}$/, \"$1\" );\n\t\treturn toString( data[ name ] );\n\t});\n\n\treturn message;\n};\n\n\n\n\nvar objectExtend = function() {\n\tvar destination = arguments[ 0 ],\n\t\tsources = [].slice.call( arguments, 1 );\n\n\tsources.forEach(function( source ) {\n\t\tvar prop;\n\t\tfor ( prop in source ) {\n\t\t\tdestination[ prop ] = source[ prop ];\n\t\t}\n\t});\n\n\treturn destination;\n};\n\n\n\n\nvar createError = function( code, message, attributes ) {\n\tvar error;\n\n\tmessage = code + ( message ? \": \" + formatMessage( message, attributes ) : \"\" );\n\terror = new Error( message );\n\terror.code = code;\n\n\tobjectExtend( error, attributes );\n\n\treturn error;\n};\n\n\n\n\n/**\n * Pushes part to parts array, concat two consecutive parts of the same type.\n */\nvar partsPush = function( parts, type, value ) {\n\n\t\t// Concat two consecutive parts of same type\n\t\tif ( parts.length && parts[ parts.length - 1 ].type === type ) {\n\t\t\tparts[ parts.length - 1 ].value += value;\n\t\t\treturn;\n\t\t}\n\n\t\tparts.push( { type: type, value: value } );\n};\n\n\n\n\n/**\n * formatMessage( message, data )\n *\n * @message [String] A message with optional {vars} to be replaced.\n *\n * @data [Array or JSON] Object with replacing-variables content.\n *\n * Return the formatted message. For example:\n *\n * - formatMessage( \"{0} second\", [ 1 ] );\n * > [{type: \"variable\", value: \"1\", name: \"0\"}, {type: \"literal\", value: \" second\"}]\n *\n * - formatMessage( \"{0}/{1}\", [\"m\", \"s\"] );\n * > [\n * { type: \"variable\", value: \"m\", name: \"0\" },\n * { type: \"literal\", value: \" /\" },\n * { type: \"variable\", value: \"s\", name: \"1\" }\n * ]\n */\nvar formatMessageToParts = function( message, data ) {\n\n\tvar lastOffset = 0,\n\t\tparts = [];\n\n\t// Create parts.\n\tmessage.replace( /{[0-9a-zA-Z-_. ]+}/g, function( nameIncludingBrackets, offset ) {\n\t\tvar name = nameIncludingBrackets.slice( 1, -1 );\n\t\tpartsPush( parts, \"literal\", message.slice( lastOffset, offset ));\n\t\tpartsPush( parts, \"variable\", data[ name ] );\n\t\tparts[ parts.length - 1 ].name = name;\n\t\tlastOffset += offset + nameIncludingBrackets.length;\n\t});\n\n\t// Skip empty ones such as `{ type: 'literal', value: '' }`.\n\treturn parts.filter(function( part ) {\n\t\treturn part.value !== \"\";\n\t});\n};\n\n\n\n\n/**\n * Returns joined parts values.\n */\nvar partsJoin = function( parts ) {\n\treturn parts.map( function( part ) {\n\t\treturn part.value;\n\t}).join( \"\" );\n};\n\n\n\n\nvar runtimeStringify = function( args ) {\n\treturn JSON.stringify( args, function( _key, value ) {\n\t\tif ( value && value.runtimeKey ) {\n\t\t\treturn value.runtimeKey;\n\t\t}\n\t\treturn value;\n\t} );\n};\n\n\n\n\n// Based on http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery\nvar stringHash = function( str ) {\n\treturn [].reduce.call( str, function( hash, i ) {\n\t\tvar chr = i.charCodeAt( 0 );\n\t\thash = ( ( hash << 5 ) - hash ) + chr;\n\t\treturn hash | 0;\n\t}, 0 );\n};\n\n\n\n\nvar runtimeKey = function( fnName, locale, args, argsStr ) {\n\tvar hash;\n\targsStr = argsStr || runtimeStringify( args );\n\thash = stringHash( fnName + locale + argsStr );\n\treturn hash > 0 ? \"a\" + hash : \"b\" + Math.abs( hash );\n};\n\n\n\n\nvar functionName = function( fn ) {\n\tif ( fn.name !== undefined ) {\n\t\treturn fn.name;\n\t}\n\n\t// fn.name is not supported by IE.\n\tvar matches = /^function\\s+([\\w\\$]+)\\s*\\(/.exec( fn.toString() );\n\n\tif ( matches && matches.length > 0 ) {\n\t\treturn matches[ 1 ];\n\t}\n};\n\n\n\n\nvar runtimeBind = function( args, cldr, fn, runtimeArgs ) {\n\n\tvar argsStr = runtimeStringify( args ),\n\t\tfnName = functionName( fn ),\n\t\tlocale = cldr.locale;\n\n\t// If name of the function is not available, this is most likely due to uglification,\n\t// which most likely means we are in production, and runtimeBind here is not necessary.\n\tif ( !fnName ) {\n\t\treturn fn;\n\t}\n\n\tfn.runtimeKey = runtimeKey( fnName, locale, null, argsStr );\n\n\tfn.generatorString = function() {\n\t\treturn \"Globalize(\\\"\" + locale + \"\\\").\" + fnName + \"(\" + argsStr.slice( 1, -1 ) + \")\";\n\t};\n\n\tfn.runtimeArgs = runtimeArgs;\n\n\treturn fn;\n};\n\n\n\n\nvar validate = function( code, message, check, attributes ) {\n\tif ( !check ) {\n\t\tthrow createError( code, message, attributes );\n\t}\n};\n\n\n\n\nvar alwaysArray = function( stringOrArray ) {\n\treturn Array.isArray( stringOrArray ) ? stringOrArray : stringOrArray ? [ stringOrArray ] : [];\n};\n\n\n\n\nvar validateCldr = function( path, value, options ) {\n\tvar skipBoolean;\n\toptions = options || {};\n\n\tskipBoolean = alwaysArray( options.skip ).some(function( pathRe ) {\n\t\treturn pathRe.test( path );\n\t});\n\n\tvalidate( \"E_MISSING_CLDR\", \"Missing required CLDR content `{path}`.\", value || skipBoolean, {\n\t\tpath: path\n\t});\n};\n\n\n\n\nvar validateDefaultLocale = function( value ) {\n\tvalidate( \"E_DEFAULT_LOCALE_NOT_DEFINED\", \"Default locale has not been defined.\",\n\t\tvalue !== undefined, {} );\n};\n\n\n\n\nvar validateParameterPresence = function( value, name ) {\n\tvalidate( \"E_MISSING_PARAMETER\", \"Missing required parameter `{name}`.\",\n\t\tvalue !== undefined, { name: name });\n};\n\n\n\n\n/**\n * range( value, name, minimum, maximum )\n *\n * @value [Number].\n *\n * @name [String] name of variable.\n *\n * @minimum [Number]. The lowest valid value, inclusive.\n *\n * @maximum [Number]. The greatest valid value, inclusive.\n */\nvar validateParameterRange = function( value, name, minimum, maximum ) {\n\tvalidate(\n\t\t\"E_PAR_OUT_OF_RANGE\",\n\t\t\"Parameter `{name}` has value `{value}` out of range [{minimum}, {maximum}].\",\n\t\tvalue === undefined || value >= minimum && value <= maximum,\n\t\t{\n\t\t\tmaximum: maximum,\n\t\t\tminimum: minimum,\n\t\t\tname: name,\n\t\t\tvalue: value\n\t\t}\n\t);\n};\n\n\n\n\nvar validateParameterType = function( value, name, check, expected ) {\n\tvalidate(\n\t\t\"E_INVALID_PAR_TYPE\",\n\t\t\"Invalid `{name}` parameter ({value}). {expected} expected.\",\n\t\tcheck,\n\t\t{\n\t\t\texpected: expected,\n\t\t\tname: name,\n\t\t\tvalue: value\n\t\t}\n\t);\n};\n\n\n\n\nvar validateParameterTypeLocale = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"string\" || value instanceof Cldr,\n\t\t\"String or Cldr instance\"\n\t);\n};\n\n\n\n\n/**\n * Function inspired by jQuery Core, but reduced to our use case.\n */\nvar isPlainObject = function( obj ) {\n\treturn obj !== null && \"\" + obj === \"[object Object]\";\n};\n\n\n\n\nvar validateParameterTypePlainObject = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || isPlainObject( value ),\n\t\t\"Plain Object\"\n\t);\n};\n\n\n\n\nvar alwaysCldr = function( localeOrCldr ) {\n\treturn localeOrCldr instanceof Cldr ? localeOrCldr : new Cldr( localeOrCldr );\n};\n\n\n\n\n// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions\nvar regexpEscape = function( string ) {\n\treturn string.replace( /([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\" );\n};\n\n\n\n\nvar stringPad = function( str, count, right ) {\n\tvar length;\n\tif ( typeof str !== \"string\" ) {\n\t\tstr = String( str );\n\t}\n\tfor ( length = str.length; length < count; length += 1 ) {\n\t\tstr = ( right ? ( str + \"0\" ) : ( \"0\" + str ) );\n\t}\n\treturn str;\n};\n\n\n\n\nfunction validateLikelySubtags( cldr ) {\n\tcldr.once( \"get\", validateCldr );\n\tcldr.get( \"supplemental/likelySubtags\" );\n}\n\n/**\n * [new] Globalize( locale|cldr )\n *\n * @locale [String]\n *\n * @cldr [Cldr instance]\n *\n * Create a Globalize instance.\n */\nfunction Globalize( locale ) {\n\tif ( !( this instanceof Globalize ) ) {\n\t\treturn new Globalize( locale );\n\t}\n\n\tvalidateParameterPresence( locale, \"locale\" );\n\tvalidateParameterTypeLocale( locale, \"locale\" );\n\n\tthis.cldr = alwaysCldr( locale );\n\n\tvalidateLikelySubtags( this.cldr );\n}\n\n/**\n * Globalize.load( json, ... )\n *\n * @json [JSON]\n *\n * Load resolved or unresolved cldr data.\n * Somewhat equivalent to previous Globalize.addCultureInfo(...).\n */\nGlobalize.load = function() {\n\n\t// validations are delegated to Cldr.load().\n\tCldr.load.apply( Cldr, arguments );\n};\n\n/**\n * Globalize.locale( [locale|cldr] )\n *\n * @locale [String]\n *\n * @cldr [Cldr instance]\n *\n * Set default Cldr instance if locale or cldr argument is passed.\n *\n * Return the default Cldr instance.\n */\nGlobalize.locale = function( locale ) {\n\tvalidateParameterTypeLocale( locale, \"locale\" );\n\n\tif ( arguments.length ) {\n\t\tthis.cldr = alwaysCldr( locale );\n\t\tvalidateLikelySubtags( this.cldr );\n\t}\n\treturn this.cldr;\n};\n\n/**\n * Optimization to avoid duplicating some internal functions across modules.\n */\nGlobalize._alwaysArray = alwaysArray;\nGlobalize._createError = createError;\nGlobalize._formatMessage = formatMessage;\nGlobalize._formatMessageToParts = formatMessageToParts;\nGlobalize._isPlainObject = isPlainObject;\nGlobalize._objectExtend = objectExtend;\nGlobalize._partsJoin = partsJoin;\nGlobalize._partsPush = partsPush;\nGlobalize._regexpEscape = regexpEscape;\nGlobalize._runtimeBind = runtimeBind;\nGlobalize._stringPad = stringPad;\nGlobalize._validate = validate;\nGlobalize._validateCldr = validateCldr;\nGlobalize._validateDefaultLocale = validateDefaultLocale;\nGlobalize._validateParameterPresence = validateParameterPresence;\nGlobalize._validateParameterRange = validateParameterRange;\nGlobalize._validateParameterTypePlainObject = validateParameterTypePlainObject;\nGlobalize._validateParameterType = validateParameterType;\n\nreturn Globalize;\n\n\n\n\n}));\n","/*!\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"./number\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar alwaysArray = Globalize._alwaysArray,\n\tcreateError = Globalize._createError,\n\tformatMessageToParts = Globalize._formatMessageToParts,\n\tnumberNumberingSystem = Globalize._numberNumberingSystem,\n\tnumberPattern = Globalize._numberPattern,\n\tpartsJoin = Globalize._partsJoin,\n\tpartsPush = Globalize._partsPush,\n\truntimeBind = Globalize._runtimeBind,\n\tstringPad = Globalize._stringPad,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypeNumber = Globalize._validateParameterTypeNumber,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject;\n\n\nvar createErrorPluralModulePresence = function() {\n\treturn createError( \"E_MISSING_PLURAL_MODULE\", \"Plural module not loaded.\" );\n};\n\n\n\n\nvar validateParameterTypeCurrency = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"string\" && ( /^[A-Za-z]{3}$/ ).test( value ),\n\t\t\"3-letter currency code string as defined by ISO 4217\"\n\t);\n};\n\n\n\n\nvar currencyFormatterFn = function( currencyToPartsFormatter ) {\n\treturn function currencyFormatter( value ) {\n\t\treturn partsJoin( currencyToPartsFormatter( value ));\n\t};\n};\n\n\n\n\n/**\n * supplementalOverride( currency, pattern, cldr )\n *\n * Return pattern with fraction digits overriden by supplemental currency data.\n */\nvar currencySupplementalOverride = function( currency, pattern, cldr ) {\n\tvar digits,\n\t\tfraction = \"\",\n\t\tfractionData = cldr.supplemental([ \"currencyData/fractions\", currency ]) ||\n\t\t\tcldr.supplemental( \"currencyData/fractions/DEFAULT\" );\n\n\tdigits = +fractionData._digits;\n\n\tif ( digits ) {\n\t\tfraction = \".\" + stringPad( \"0\", digits ).slice( 0, -1 ) + fractionData._rounding;\n\t}\n\n\treturn pattern.replace( /\\.(#+|0*[0-9]|0+[0-9]?)/g, fraction );\n};\n\n\n\n\nvar objectFilter = function( object, testRe ) {\n\tvar key,\n\t\tcopy = {};\n\n\tfor ( key in object ) {\n\t\tif ( testRe.test( key ) ) {\n\t\t\tcopy[ key ] = object[ key ];\n\t\t}\n\t}\n\n\treturn copy;\n};\n\n\n\n\nvar currencyUnitPatterns = function( cldr ) {\n\treturn objectFilter( cldr.main([\n\t\t\"numbers\",\n\t\t\"currencyFormats-numberSystem-\" + numberNumberingSystem( cldr )\n\t]), /^unitPattern/ );\n};\n\n\n\n\n/**\n * nameProperties( currency, cldr )\n *\n * Return number pattern with the appropriate currency code in as literal.\n */\nvar currencyNameProperties = function( currency, cldr ) {\n\tvar pattern = numberPattern( \"decimal\", cldr );\n\n\t// The number of decimal places and the rounding for each currency is not locale-specific. Those\n\t// values overridden by Supplemental Currency Data.\n\tpattern = currencySupplementalOverride( currency, pattern, cldr );\n\n\treturn {\n\t\tdisplayNames: objectFilter( cldr.main([\n\t\t\t\"numbers/currencies\",\n\t\t\tcurrency\n\t\t]), /^displayName/ ),\n\t\tpattern: pattern,\n\t\tunitPatterns: currencyUnitPatterns( cldr )\n\t};\n};\n\n\n\n\n/**\n * Unicode regular expression for: everything except symbols from the category S\n *\n * Generated by:\n *\n * var s = regenerate()\n * .addRange( 0x0, 0x10FFFF )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Math_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Currency_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Modifier_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Other_Symbol/symbols\" ) )\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n * http://www.unicode.org/reports/tr44/#General_Category_Values\n */\nvar regexpNotS = /[\\0-#%-\\*,-;\\?-\\]_a-\\{\\}\\x7F-\\xA1\\xA7\\xAA\\xAB\\xAD\\xB2\\xB3\\xB5-\\xB7\\xB9-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376-\\u0383\\u0386-\\u03F5\\u03F7-\\u0481\\u0483-\\u058C\\u0590-\\u0605\\u0609\\u060A\\u060C\\u060D\\u0610-\\u06DD\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF-\\u07F5\\u07F7-\\u07FD\\u0800-\\u09F1\\u09F4-\\u09F9\\u09FC-\\u0AF0\\u0AF2-\\u0B6F\\u0B71-\\u0BF2\\u0BFB-\\u0C7E\\u0C80-\\u0D4E\\u0D50-\\u0D78\\u0D7A-\\u0E3E\\u0E40-\\u0F00\\u0F04-\\u0F12\\u0F14\\u0F18\\u0F19\\u0F20-\\u0F33\\u0F35\\u0F37\\u0F39-\\u0FBD\\u0FC6\\u0FCD\\u0FD0-\\u0FD4\\u0FD9-\\u109D\\u10A0-\\u138F\\u139A-\\u166C\\u166E-\\u17DA\\u17DC-\\u193F\\u1941-\\u19DD\\u1A00-\\u1B60\\u1B6B-\\u1B73\\u1B7D-\\u1FBC\\u1FBE\\u1FC2-\\u1FCC\\u1FD0-\\u1FDC\\u1FE0-\\u1FEC\\u1FF0-\\u1FFC\\u1FFF-\\u2043\\u2045-\\u2051\\u2053-\\u2079\\u207D-\\u2089\\u208D-\\u209F\\u20C0-\\u20FF\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u218C-\\u218F\\u2308-\\u230B\\u2329\\u232A\\u2427-\\u243F\\u244B-\\u249B\\u24EA-\\u24FF\\u2768-\\u2793\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2B74\\u2B75\\u2B96\\u2C00-\\u2CE4\\u2CEB-\\u2E4F\\u2E52-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u3003\\u3005-\\u3011\\u3014-\\u301F\\u3021-\\u3035\\u3038-\\u303D\\u3040-\\u309A\\u309D-\\u318F\\u3192-\\u3195\\u31A0-\\u31BF\\u31E4-\\u31FF\\u321F-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48F\\uA4C7-\\uA6FF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA827\\uA82C-\\uA835\\uA83A-\\uAA76\\uAA7A-\\uAB5A\\uAB5C-\\uAB69\\uAB6C-\\uD7FF\\uE000-\\uFB28\\uFB2A-\\uFBB1\\uFBC2-\\uFDFB\\uFDFE-\\uFE61\\uFE63\\uFE67\\uFE68\\uFE6A-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF1B\\uFF1F-\\uFF3D\\uFF3F\\uFF41-\\uFF5B\\uFF5D\\uFF5F-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF]|\\uD800[\\uDC00-\\uDD36\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDD8F\\uDD9D-\\uDD9F\\uDDA1-\\uDDCF\\uDDFD-\\uDFFF]|[\\uD801\\uD803\\uD804\\uD806\\uD808-\\uD819\\uD81B-\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83A\\uD83F-\\uDBFF][\\uDC00-\\uDFFF]|\\uD802[\\uDC00-\\uDC76\\uDC79-\\uDEC7\\uDEC9-\\uDFFF]|\\uD805[\\uDC00-\\uDF3E\\uDF40-\\uDFFF]|\\uD807[\\uDC00-\\uDFD4\\uDFF2-\\uDFFF]|\\uD81A[\\uDC00-\\uDF3B\\uDF40-\\uDF44\\uDF46-\\uDFFF]|\\uD82F[\\uDC00-\\uDC9B\\uDC9D-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD65-\\uDD69\\uDD6D-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDDE9-\\uDDFF\\uDE42-\\uDE44\\uDE46-\\uDEFF\\uDF57-\\uDFFF]|\\uD835[\\uDC00-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE87-\\uDFFF]|\\uD838[\\uDC00-\\uDD4E\\uDD50-\\uDEFE\\uDF00-\\uDFFF]|\\uD83B[\\uDC00-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDD2D\\uDD2F-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDD0C\\uDDAE-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED8-\\uDEDF\\uDEED-\\uDEEF\\uDEFD-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFDF\\uDFEC-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE\\uDCAF\\uDCB2-\\uDCFF\\uDD79\\uDDCC\\uDE54-\\uDE5F\\uDE6E\\uDE6F\\uDE75-\\uDE77\\uDE7B-\\uDE7F\\uDE87-\\uDE8F\\uDEA9-\\uDEAF\\uDEB7-\\uDEBF\\uDEC3-\\uDECF\\uDED7-\\uDEFF\\uDF93\\uDFCB-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\n\n\n\n/**\n * Unicode regular expression for: everything except symbols from categories S and Z\n *\n * Generated by:\n *\n * var s = regenerate()\n * .addRange( 0x0, 0x10FFFF )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Math_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Currency_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Modifier_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Other_Symbol/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Space_Separator/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Line_Separator/symbols\" ) )\n * .remove( require( \"@unicode/unicode-13.0.0/General_Category/Paragraph_Separator/symbols\" ) );\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n * http://www.unicode.org/reports/tr44/#General_Category_Values\n */\nvar regexpNotSAndZ = /[\\0-\\x1F!-#%-\\*,-;\\?-\\]_a-\\{\\}\\x7F-\\x9F\\xA1\\xA7\\xAA\\xAB\\xAD\\xB2\\xB3\\xB5-\\xB7\\xB9-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376-\\u0383\\u0386-\\u03F5\\u03F7-\\u0481\\u0483-\\u058C\\u0590-\\u0605\\u0609\\u060A\\u060C\\u060D\\u0610-\\u06DD\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF-\\u07F5\\u07F7-\\u07FD\\u0800-\\u09F1\\u09F4-\\u09F9\\u09FC-\\u0AF0\\u0AF2-\\u0B6F\\u0B71-\\u0BF2\\u0BFB-\\u0C7E\\u0C80-\\u0D4E\\u0D50-\\u0D78\\u0D7A-\\u0E3E\\u0E40-\\u0F00\\u0F04-\\u0F12\\u0F14\\u0F18\\u0F19\\u0F20-\\u0F33\\u0F35\\u0F37\\u0F39-\\u0FBD\\u0FC6\\u0FCD\\u0FD0-\\u0FD4\\u0FD9-\\u109D\\u10A0-\\u138F\\u139A-\\u166C\\u166E-\\u167F\\u1681-\\u17DA\\u17DC-\\u193F\\u1941-\\u19DD\\u1A00-\\u1B60\\u1B6B-\\u1B73\\u1B7D-\\u1FBC\\u1FBE\\u1FC2-\\u1FCC\\u1FD0-\\u1FDC\\u1FE0-\\u1FEC\\u1FF0-\\u1FFC\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u2060-\\u2079\\u207D-\\u2089\\u208D-\\u209F\\u20C0-\\u20FF\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u218C-\\u218F\\u2308-\\u230B\\u2329\\u232A\\u2427-\\u243F\\u244B-\\u249B\\u24EA-\\u24FF\\u2768-\\u2793\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2B74\\u2B75\\u2B96\\u2C00-\\u2CE4\\u2CEB-\\u2E4F\\u2E52-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3001-\\u3003\\u3005-\\u3011\\u3014-\\u301F\\u3021-\\u3035\\u3038-\\u303D\\u3040-\\u309A\\u309D-\\u318F\\u3192-\\u3195\\u31A0-\\u31BF\\u31E4-\\u31FF\\u321F-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48F\\uA4C7-\\uA6FF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA827\\uA82C-\\uA835\\uA83A-\\uAA76\\uAA7A-\\uAB5A\\uAB5C-\\uAB69\\uAB6C-\\uD7FF\\uE000-\\uFB28\\uFB2A-\\uFBB1\\uFBC2-\\uFDFB\\uFDFE-\\uFE61\\uFE63\\uFE67\\uFE68\\uFE6A-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF1B\\uFF1F-\\uFF3D\\uFF3F\\uFF41-\\uFF5B\\uFF5D\\uFF5F-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF]|\\uD800[\\uDC00-\\uDD36\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDD8F\\uDD9D-\\uDD9F\\uDDA1-\\uDDCF\\uDDFD-\\uDFFF]|[\\uD801\\uD803\\uD804\\uD806\\uD808-\\uD819\\uD81B-\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83A\\uD83F-\\uDBFF][\\uDC00-\\uDFFF]|\\uD802[\\uDC00-\\uDC76\\uDC79-\\uDEC7\\uDEC9-\\uDFFF]|\\uD805[\\uDC00-\\uDF3E\\uDF40-\\uDFFF]|\\uD807[\\uDC00-\\uDFD4\\uDFF2-\\uDFFF]|\\uD81A[\\uDC00-\\uDF3B\\uDF40-\\uDF44\\uDF46-\\uDFFF]|\\uD82F[\\uDC00-\\uDC9B\\uDC9D-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD65-\\uDD69\\uDD6D-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDDE9-\\uDDFF\\uDE42-\\uDE44\\uDE46-\\uDEFF\\uDF57-\\uDFFF]|\\uD835[\\uDC00-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE87-\\uDFFF]|\\uD838[\\uDC00-\\uDD4E\\uDD50-\\uDEFE\\uDF00-\\uDFFF]|\\uD83B[\\uDC00-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDD2D\\uDD2F-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDD0C\\uDDAE-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED8-\\uDEDF\\uDEED-\\uDEEF\\uDEFD-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFDF\\uDFEC-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE\\uDCAF\\uDCB2-\\uDCFF\\uDD79\\uDDCC\\uDE54-\\uDE5F\\uDE6E\\uDE6F\\uDE75-\\uDE77\\uDE7B-\\uDE7F\\uDE87-\\uDE8F\\uDEA9-\\uDEAF\\uDEB7-\\uDEBF\\uDEC3-\\uDECF\\uDED7-\\uDEFF\\uDF93\\uDFCB-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\n\n\n\n/**\n * symbolProperties( currency, cldr )\n *\n * Return pattern replacing `¤` with the appropriate currency symbol literal.\n */\nvar currencySymbolProperties = function( currency, cldr, options ) {\n\tvar currencySpacing, pattern, symbol, symbolEntries,\n\t\tregexp = {\n\t\t\t\"[:digit:]\": /\\d/,\n\t\t\t\"[:^S:]\": regexpNotS,\n\t\t\t\"[[:^S:]&[:^Z:]]\": regexpNotSAndZ\n\t\t};\n\n\tif ( options.style === \"code\" ) {\n\t\tsymbol = currency;\n\t} else {\n\t\tsymbolEntries = [ \"symbol\" ];\n\n\t\t// If options.symbolForm === \"narrow\" was passed, prepend it.\n\t\tif ( options.symbolForm === \"narrow\" ) {\n\t\t\tsymbolEntries.unshift( \"symbol-alt-narrow\" );\n\t\t}\n\n\t\tsymbolEntries.some(function( symbolEntry ) {\n\t\t\treturn symbol = cldr.main([\n\t\t\t\t\"numbers/currencies\",\n\t\t\t\tcurrency,\n\t\t\t\tsymbolEntry\n\t\t\t]);\n\t\t});\n\t}\n\n\tcurrencySpacing = [ \"beforeCurrency\", \"afterCurrency\" ].map(function( position ) {\n\t\treturn cldr.main([\n\t\t\t\"numbers\",\n\t\t\t\"currencyFormats-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\t\t\"currencySpacing\",\n\t\t\tposition\n\t\t]);\n\t});\n\n\tpattern = cldr.main([\n\t\t\"numbers\",\n\t\t\"currencyFormats-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\toptions.style === \"accounting\" ? \"accounting\" : \"standard\"\n\t]);\n\n\tpattern =\n\n\t\t// The number of decimal places and the rounding for each currency is not locale-specific.\n\t\t// Those values are overridden by Supplemental Currency Data.\n\t\tcurrencySupplementalOverride( currency, pattern, cldr )\n\n\t\t// Replace \"¤\" (\\u00A4) with the appropriate symbol literal.\n\t\t.split( \";\" ).map(function( pattern ) {\n\n\t\t\treturn pattern.split( \"\\u00A4\" ).map(function( part, i ) {\n\t\t\t\tvar currencyMatch = regexp[ currencySpacing[ i ].currencyMatch ],\n\t\t\t\t\tsurroundingMatch = regexp[ currencySpacing[ i ].surroundingMatch ],\n\t\t\t\t\tinsertBetween = \"\";\n\n\t\t\t\t// For currencyMatch and surroundingMatch definitions, read [1].\n\t\t\t\t// When i === 0, beforeCurrency is being handled. Otherwise, afterCurrency.\n\t\t\t\t// 1: http://www.unicode.org/reports/tr35/tr35-numbers.html#Currencies\n\t\t\t\tcurrencyMatch = currencyMatch.test( symbol.charAt( i ? symbol.length - 1 : 0 ) );\n\t\t\t\tsurroundingMatch = surroundingMatch.test(\n\t\t\t\t\tpart.charAt( i ? 0 : part.length - 1 ).replace( /[#@,.]/g, \"0\" )\n\t\t\t\t);\n\n\t\t\t\tif ( currencyMatch && part && surroundingMatch ) {\n\t\t\t\t\tinsertBetween = currencySpacing[ i ].insertBetween;\n\t\t\t\t}\n\n\t\t\t\treturn ( i ? insertBetween : \"\" ) + part + ( i ? \"\" : insertBetween );\n\t\t\t}).join( \"\\u00A4\" );\n\t\t}).join( \";\" );\n\n\treturn {\n\t\tpattern: pattern,\n\t\tsymbol: symbol\n\t};\n};\n\n\n\n\n/**\n * nameFormat( formattedNumber, pluralForm, properties )\n *\n * Return the appropriate name form currency format.\n */\nvar currencyNameFormat = function( formattedNumber, pluralForm, properties ) {\n\tvar displayName, unitPattern,\n\t\tparts = [],\n\t\tdisplayNames = properties.displayNames || {},\n\t\tunitPatterns = properties.unitPatterns;\n\n\tdisplayName = displayNames[ \"displayName-count-\" + pluralForm ] ||\n\t\tdisplayNames[ \"displayName-count-other\" ] ||\n\t\tdisplayNames.displayName ||\n\t\tproperties.currency;\n\tunitPattern = unitPatterns[ \"unitPattern-count-\" + pluralForm ] ||\n\t\tunitPatterns[ \"unitPattern-count-other\" ];\n\n\tformatMessageToParts( unitPattern, [ formattedNumber, displayName ]).forEach(function( part ) {\n\t\tif ( part.type === \"variable\" && part.name === \"0\" ) {\n\t\t\tpart.value.forEach(function( part ) {\n\t\t\t\tpartsPush( parts, part.type, part.value );\n\t\t\t});\n\t\t} else if ( part.type === \"variable\" && part.name === \"1\" ) {\n\t\t\tpartsPush( parts, \"currency\", part.value );\n\t\t} else {\n\t\t\tpartsPush( parts, \"literal\", part.value );\n\t\t}\n\t});\n\n\treturn parts;\n};\n\n\n\n\n/**\n * symbolFormat( parts, symbol )\n *\n * Return the appropriate symbol/account form format.\n */\nvar currencySymbolFormat = function( parts, symbol ) {\n\tparts.forEach(function( part ) {\n\t\tif ( part.type === \"currency\" ) {\n\t\t\tpart.value = symbol;\n\t\t}\n\t});\n\treturn parts;\n};\n\n\n\n\nvar currencyToPartsFormatterFn = function( numberToPartsFormatter, pluralGenerator, properties ) {\n\tvar fn;\n\n\t// Return formatter when style is \"name\".\n\tif ( pluralGenerator && properties ) {\n\t\tfn = function currencyToPartsFormatter( value ) {\n\t\t\tvalidateParameterPresence( value, \"value\" );\n\t\t\tvalidateParameterTypeNumber( value, \"value\" );\n\t\t\treturn currencyNameFormat(\n\t\t\t\tnumberToPartsFormatter( value ),\n\t\t\t\tpluralGenerator( value ),\n\t\t\t\tproperties\n\t\t\t);\n\t\t};\n\n\t// Return formatter when style is \"symbol\", \"accounting\", or \"code\".\n\t} else {\n\t\tfn = function currencyToPartsFormatter( value ) {\n\n\t\t\t// 1: Reusing pluralGenerator argument, but in this case it is actually `symbol`\n\t\t\treturn currencySymbolFormat( numberToPartsFormatter( value ), pluralGenerator /* 1 */ );\n\t\t};\n\t}\n\n\treturn fn;\n};\n\n\n\n\n/**\n * objectOmit( object, keys )\n *\n * Return a copy of the object, filtered to omit the blacklisted key or array of keys.\n */\nvar objectOmit = function( object, keys ) {\n\tvar key,\n\t\tcopy = {};\n\n\tkeys = alwaysArray( keys );\n\n\tfor ( key in object ) {\n\t\tif ( keys.indexOf( key ) === -1 ) {\n\t\t\tcopy[ key ] = object[ key ];\n\t\t}\n\t}\n\n\treturn copy;\n};\n\n\n\n\nfunction validateRequiredCldr( path, value ) {\n\tvalidateCldr( path, value, {\n\t\tskip: [\n\t\t\t/numbers\\/currencies\\/[^/]+\\/symbol-alt-/,\n\t\t\t/supplemental\\/currencyData\\/fractions\\/[A-Za-z]{3}$/\n\t\t]\n\t});\n}\n\n/**\n * .currencyFormatter( currency [, options] )\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object]:\n * - style: [String] \"symbol\" (default), \"accounting\", \"code\" or \"name\".\n * - see also number/format options.\n *\n * Return a function that formats a currency according to the given options and default/instance\n * locale.\n */\nGlobalize.currencyFormatter =\nGlobalize.prototype.currencyFormatter = function( currency, options ) {\n\tvar args, currencyToPartsFormatter, returnFn;\n\n\tvalidateParameterPresence( currency, \"currency\" );\n\tvalidateParameterTypeCurrency( currency, \"currency\" );\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\targs = [ currency, options ];\n\n\tcurrencyToPartsFormatter = this.currencyToPartsFormatter( currency, options );\n\treturnFn = currencyFormatterFn( currencyToPartsFormatter );\n\truntimeBind( args, this.cldr, returnFn, [ currencyToPartsFormatter ] );\n\n\treturn returnFn;\n};\n\n/**\n * .currencyToPartsFormatter( currency [, options] )\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object]:\n * - style: [String] \"symbol\" (default), \"accounting\", \"code\" or \"name\".\n * - see also number/format options.\n *\n * Return a currency formatter function (of the form below) according to the given options and the\n * default/instance locale.\n *\n * fn( value )\n *\n * @value [Number]\n *\n * Return a function that formats a currency to parts according to the given options\n * and the default/instance locale.\n */\nGlobalize.currencyToPartsFormatter =\nGlobalize.prototype.currencyToPartsFormatter = function( currency, options ) {\n\tvar args, cldr, numberToPartsFormatter, pluralGenerator, properties, returnFn, style;\n\n\tvalidateParameterPresence( currency, \"currency\" );\n\tvalidateParameterTypeCurrency( currency, \"currency\" );\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\tcldr = this.cldr;\n\toptions = options || {};\n\n\targs = [ currency, options ];\n\tstyle = options.style || \"symbol\";\n\n\tvalidateDefaultLocale( cldr );\n\n\t// Get properties given style (\"symbol\" default, \"code\" or \"name\").\n\tcldr.on( \"get\", validateRequiredCldr );\n\ttry {\n\t\tproperties = ({\n\t\t\taccounting: currencySymbolProperties,\n\t\t\tcode: currencySymbolProperties,\n\t\t\tname: currencyNameProperties,\n\t\t\tsymbol: currencySymbolProperties\n\t\t}[ style ] )( currency, cldr, options );\n\t} finally {\n\t\tcldr.off( \"get\", validateRequiredCldr );\n\t}\n\n\t// options = options minus style, plus raw pattern.\n\toptions = objectOmit( options, \"style\" );\n\toptions.raw = properties.pattern;\n\n\t// Return formatter when style is \"symbol\", \"accounting\", or \"code\".\n\tif ( style === \"symbol\" || style === \"accounting\" || style === \"code\" ) {\n\t\tnumberToPartsFormatter = this.numberToPartsFormatter( options );\n\n\t\treturnFn = currencyToPartsFormatterFn( numberToPartsFormatter, properties.symbol );\n\n\t\truntimeBind( args, cldr, returnFn, [ numberToPartsFormatter, properties.symbol ] );\n\n\t// Return formatter when style is \"name\".\n\t} else {\n\t\tnumberToPartsFormatter = this.numberToPartsFormatter( options );\n\n\t\t// Is plural module present? Yes, use its generator. Nope, use an error generator.\n\t\tpluralGenerator = this.plural !== undefined ?\n\t\t\tthis.pluralGenerator() :\n\t\t\tcreateErrorPluralModulePresence;\n\n\t\treturnFn = currencyToPartsFormatterFn(\n\t\t\tnumberToPartsFormatter,\n\t\t\tpluralGenerator,\n\t\t\tproperties\n\t\t);\n\n\t\truntimeBind( args, cldr, returnFn, [\n\t\t\tnumberToPartsFormatter,\n\t\t\tpluralGenerator,\n\t\t\tproperties\n\t\t]);\n\t}\n\n\treturn returnFn;\n};\n\n/**\n * .currencyParser( currency [, options] )\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object] see currencyFormatter.\n *\n * Return the currency parser according to the given options and the default/instance locale.\n */\nGlobalize.currencyParser =\nGlobalize.prototype.currencyParser = function( /* currency, options */ ) {\n\n\t// TODO implement parser.\n\n};\n\n/**\n * .formatCurrency( value, currency [, options] )\n *\n * @value [Number] number to be formatted.\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object] see currencyFormatter.\n *\n * Format a currency according to the given options and the default/instance locale.\n */\nGlobalize.formatCurrency =\nGlobalize.prototype.formatCurrency = function( value, currency, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\treturn this.currencyFormatter( currency, options )( value );\n};\n\n/**\n * .formatCurrencyToParts( value, currency [, options] )\n *\n * @value [Number] number to be formatted.\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object] see currencyFormatter.\n *\n * Format a currency to parts according to the given options and the default/instance locale.\n */\nGlobalize.formatCurrencyToParts =\nGlobalize.prototype.formatCurrencyToParts = function( value, currency, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\treturn this.currencyToPartsFormatter( currency, options )( value );\n};\n\n/**\n * .parseCurrency( value, currency [, options] )\n *\n * @value [String]\n *\n * @currency [String] 3-letter currency code as defined by ISO 4217.\n *\n * @options [Object]: See currencyFormatter.\n *\n * Return the parsed currency or NaN when value is invalid.\n */\nGlobalize.parseCurrency =\nGlobalize.prototype.parseCurrency = function( /* value, currency, options */ ) {\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"./number\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Extend global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar createError = Globalize._createError,\n\tcreateErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature,\n\tformatMessage = Globalize._formatMessage,\n\tisPlainObject = Globalize._isPlainObject,\n\tlooseMatching = Globalize._looseMatching,\n\tnumberNumberingSystemDigitsMap = Globalize._numberNumberingSystemDigitsMap,\n\tnumberSymbol = Globalize._numberSymbol,\n\tpartsJoin = Globalize._partsJoin,\n\tpartsPush = Globalize._partsPush,\n\tregexpEscape = Globalize._regexpEscape,\n\tremoveLiteralQuotes = Globalize._removeLiteralQuotes,\n\truntimeBind = Globalize._runtimeBind,\n\tstringPad = Globalize._stringPad,\n\tvalidate = Globalize._validate,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject,\n\tvalidateParameterTypeString = Globalize._validateParameterTypeString;\n\n\nvar validateParameterTypeDate = function( value, name ) {\n\tvalidateParameterType( value, name, value === undefined || value instanceof Date, \"Date\" );\n};\n\n\n\n\nvar createErrorInvalidParameterValue = function( name, value ) {\n\treturn createError( \"E_INVALID_PAR_VALUE\", \"Invalid `{name}` value ({value}).\", {\n\t\tname: name,\n\t\tvalue: value\n\t});\n};\n\n\n\n\n/**\n * Create a map between the skeleton fields and their positions, e.g.,\n * {\n * G: 0\n * y: 1\n * ...\n * }\n */\nvar validateSkeletonFieldsPosMap = \"GyYuUrQqMLlwWEecdDFghHKkmsSAzZOvVXx\".split( \"\" ).reduce(function( memo, item, i ) {\n\tmemo[ item ] = i;\n\treturn memo;\n}, {});\n\n\n\n\n/**\n * validateSkeleton( skeleton )\n *\n * skeleton: Assume `j` has already been converted into a localized hour field.\n */\nvar validateSkeleton = function validateSkeleton( skeleton ) {\n\tvar last,\n\n\t\t// Using easier to read variable.\n\t\tfieldsPosMap = validateSkeletonFieldsPosMap;\n\n\t// \"The fields are from the Date Field Symbol Table in Date Format Patterns\"\n\t// Ref: http://www.unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n\t// I.e., check for invalid characters.\n\tskeleton.replace( /[^GyYuUrQqMLlwWEecdDFghHKkmsSAzZOvVXx]/, function( field ) {\n\t\tthrow createError(\n\t\t\t\"E_INVALID_OPTIONS\", \"Invalid field `{invalidField}` of skeleton `{value}`\",\n\t\t\t{\n\t\t\t\tinvalidField: field,\n\t\t\t\ttype: \"skeleton\",\n\t\t\t\tvalue: skeleton\n\t\t\t}\n\t\t);\n\t});\n\n\t// \"The canonical order is from top to bottom in that table; that is, yM not My\".\n\t// http://www.unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n\t// I.e., check for invalid order.\n\tskeleton.split( \"\" ).every(function( field ) {\n\t\tif ( fieldsPosMap[ field ] < last ) {\n\t\t\tthrow createError(\n\t\t\t\t\"E_INVALID_OPTIONS\", \"Invalid order `{invalidField}` of skeleton `{value}`\",\n\t\t\t\t{\n\t\t\t\t\tinvalidField: field,\n\t\t\t\t\ttype: \"skeleton\",\n\t\t\t\t\tvalue: skeleton\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tlast = fieldsPosMap[ field ];\n\t\treturn true;\n\t});\n};\n\n\n\n\n/**\n * Returns a new object created by using `object`'s values as keys, and the keys as values.\n */\nvar objectInvert = function( object, fn ) {\n\tfn = fn || function( object, key, value ) {\n\t\tobject[ value ] = key;\n\t\treturn object;\n\t};\n\treturn Object.keys( object ).reduce(function( newObject, key ) {\n\t\treturn fn( newObject, key, object[ key ] );\n\t}, {});\n};\n\n\n\n\n// Invert key and values, e.g., {\"e\": \"eEc\"} ==> {\"e\": \"e\", \"E\": \"e\", \"c\": \"e\"}.\nvar dateExpandPatternSimilarFieldsMap = objectInvert({\n\t\"e\": \"eEc\",\n\t\"L\": \"ML\"\n}, function( object, key, value ) {\n\tvalue.split( \"\" ).forEach(function( field ) {\n\t\tobject[ field ] = key;\n\t});\n\treturn object;\n});\n\n\n\n\nvar dateExpandPatternNormalizePatternType = function( character ) {\n\treturn dateExpandPatternSimilarFieldsMap[ character ] || character;\n};\n\n\n\n\nvar datePatternRe = ( /([a-z])\\1*|'([^']|'')+'|''|./ig );\n\n\n\n\nvar stringRepeat = function( str, count ) {\n\tvar i, result = \"\";\n\tfor ( i = 0; i < count; i++ ) {\n\t\tresult = result + str;\n\t}\n\treturn result;\n};\n\n\n\n\nfunction expandBestMatchFormat( skeletonWithoutFractionalSeconds, bestMatchFormat ) {\n\tvar i, j, bestMatchFormatParts, matchedType, matchedLength, requestedType,\n\t\trequestedLength, requestedSkeletonParts,\n\n\t\t// Using an easier to read variable.\n\t\tnormalizePatternType = dateExpandPatternNormalizePatternType;\n\n\trequestedSkeletonParts = skeletonWithoutFractionalSeconds.match( datePatternRe );\n\tbestMatchFormatParts = bestMatchFormat.match( datePatternRe );\n\n\tfor ( i = 0; i < bestMatchFormatParts.length; i++ ) {\n\t\tmatchedType = bestMatchFormatParts[ i ].charAt( 0 );\n\t\tmatchedLength = bestMatchFormatParts[ i ].length;\n\t\tfor ( j = 0; j < requestedSkeletonParts.length; j++ ) {\n\t\t\trequestedType = requestedSkeletonParts[ j ].charAt( 0 );\n\t\t\trequestedLength = requestedSkeletonParts[ j ].length;\n\t\t\tif ( normalizePatternType( matchedType ) === normalizePatternType( requestedType ) &&\n\t\t\t\tmatchedLength < requestedLength\n\t\t\t) {\n\t\t\t\tbestMatchFormatParts[ i ] = stringRepeat( matchedType, requestedLength );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bestMatchFormatParts.join( \"\" );\n}\n\n// See: http://www.unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons\nvar dateExpandPatternAugmentFormat = function( requestedSkeleton, bestMatchFormat, decimalSeparator ) {\n\tvar countOfFractionalSeconds, fractionalSecondMatch, lastSecondIdx,\n\t\tskeletonWithoutFractionalSeconds;\n\n\tfractionalSecondMatch = requestedSkeleton.match( /S/g );\n\tcountOfFractionalSeconds = fractionalSecondMatch ? fractionalSecondMatch.length : 0;\n\tskeletonWithoutFractionalSeconds = requestedSkeleton.replace( /S/g, \"\" );\n\n\tbestMatchFormat = expandBestMatchFormat( skeletonWithoutFractionalSeconds, bestMatchFormat );\n\n\tlastSecondIdx = bestMatchFormat.lastIndexOf( \"s\" );\n\tif ( lastSecondIdx !== -1 && countOfFractionalSeconds !== 0 ) {\n\t\tbestMatchFormat =\n\t\t\tbestMatchFormat.slice( 0, lastSecondIdx + 1 ) +\n\t\t\tdecimalSeparator +\n\t\t\tstringRepeat( \"S\", countOfFractionalSeconds ) +\n\t\t\tbestMatchFormat.slice( lastSecondIdx + 1 );\n\t}\n\treturn bestMatchFormat;\n};\n\n\n\n\nvar dateExpandPatternCompareFormats = function( formatA, formatB ) {\n\tvar a, b, distance, lenA, lenB, typeA, typeB, i, j,\n\n\t\t// Using easier to read variables.\n\t\tnormalizePatternType = dateExpandPatternNormalizePatternType;\n\n\tif ( formatA === formatB ) {\n\t\treturn 0;\n\t}\n\n\tformatA = formatA.match( datePatternRe );\n\tformatB = formatB.match( datePatternRe );\n\n\tif ( formatA.length !== formatB.length ) {\n\t\treturn -1;\n\t}\n\n\tdistance = 1;\n\tfor ( i = 0; i < formatA.length; i++ ) {\n\t\ta = formatA[ i ].charAt( 0 );\n\t\ttypeA = normalizePatternType( a );\n\t\ttypeB = null;\n\t\tfor ( j = 0; j < formatB.length; j++ ) {\n\t\t\tb = formatB[ j ].charAt( 0 );\n\t\t\ttypeB = normalizePatternType( b );\n\t\t\tif ( typeA === typeB ) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\ttypeB = null;\n\t\t\t}\n\t\t}\n\t\tif ( typeB === null ) {\n\t\t\treturn -1;\n\t\t}\n\t\tlenA = formatA[ i ].length;\n\t\tlenB = formatB[ j ].length;\n\t\tdistance = distance + Math.abs( lenA - lenB );\n\n\t\t// Most symbols have a small distance from each other, e.g., M ≅ L; E ≅ c; a ≅ b ≅ B;\n\t\t// H ≅ k ≅ h ≅ K; ...\n\t\tif ( a !== b ) {\n\t\t\tdistance += 1;\n\t\t}\n\n\t\t// Numeric (l<3) and text fields (l>=3) are given a larger distance from each other.\n\t\tif ( ( lenA < 3 && lenB >= 3 ) || ( lenA >= 3 && lenB < 3 ) ) {\n\t\t\tdistance += 20;\n\t\t}\n\t}\n\treturn distance;\n};\n\n\n\n\nvar dateExpandPatternGetBestMatchPattern = function( cldr, askedSkeleton ) {\n\tvar availableFormats, decimalSeparator, pattern, ratedFormats, skeleton,\n\t\tpath = \"dates/calendars/gregorian/dateTimeFormats/availableFormats\",\n\n\t\t// Using easier to read variables.\n\t\taugmentFormat = dateExpandPatternAugmentFormat,\n\t\tcompareFormats = dateExpandPatternCompareFormats;\n\n\tpattern = cldr.main([ path, askedSkeleton ]);\n\n\tif ( askedSkeleton && !pattern ) {\n\t\tavailableFormats = cldr.main([ path ]);\n\t\tratedFormats = [];\n\n\t\tfor ( skeleton in availableFormats ) {\n\t\t\tratedFormats.push({\n\t\t\t\tskeleton: skeleton,\n\t\t\t\tpattern: availableFormats[ skeleton ],\n\t\t\t\trate: compareFormats( askedSkeleton, skeleton )\n\t\t\t});\n\t\t}\n\n\t\tratedFormats = ratedFormats\n\t\t\t.filter( function( format ) {\n\t\t\t\treturn format.rate > -1;\n\t\t\t} )\n\t\t\t.sort( function( formatA, formatB ) {\n\t\t\t\treturn formatA.rate - formatB.rate;\n\t\t\t});\n\n\t\tif ( ratedFormats.length ) {\n\t\t\tdecimalSeparator = numberSymbol( \"decimal\", cldr );\n\t\t\tpattern = augmentFormat( askedSkeleton, ratedFormats[ 0 ].pattern, decimalSeparator );\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\n\n\n\n/**\n * expandPattern( options, cldr )\n *\n * @options [Object] if String, it's considered a skeleton. Object accepts:\n * - skeleton: [String] lookup availableFormat;\n * - date: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - time: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - datetime: [String] ( \"full\" | \"long\" | \"medium\" | \"short\" );\n * - raw: [String] For more info see datetime/format.js.\n *\n * @cldr [Cldr instance].\n *\n * Return the corresponding pattern.\n * Eg for \"en\":\n * - \"GyMMMd\" returns \"MMM d, y G\";\n * - { skeleton: \"GyMMMd\" } returns \"MMM d, y G\";\n * - { date: \"full\" } returns \"EEEE, MMMM d, y\";\n * - { time: \"full\" } returns \"h:mm:ss a zzzz\";\n * - { datetime: \"full\" } returns \"EEEE, MMMM d, y 'at' h:mm:ss a zzzz\";\n * - { raw: \"dd/mm\" } returns \"dd/mm\";\n */\nvar dateExpandPattern = function( options, cldr ) {\n\tvar dateSkeleton, result, skeleton, timeSkeleton, type,\n\n\t\t// Using easier to read variables.\n\t\tgetBestMatchPattern = dateExpandPatternGetBestMatchPattern;\n\n\tfunction combineDateTime( type, datePattern, timePattern ) {\n\t\treturn formatMessage(\n\t\t\tcldr.main([\n\t\t\t\t\"dates/calendars/gregorian/dateTimeFormats\",\n\t\t\t\ttype\n\t\t\t]),\n\t\t\t[ timePattern, datePattern ]\n\t\t);\n\t}\n\n\tswitch ( true ) {\n\t\tcase \"skeleton\" in options:\n\t\t\tskeleton = options.skeleton;\n\n\t\t\t// Preferred hour (j).\n\t\t\tskeleton = skeleton.replace( /j/g, function() {\n\t\t\t\treturn cldr.supplemental.timeData.preferred();\n\t\t\t});\n\n\t\t\tvalidateSkeleton( skeleton );\n\n\t\t\t// Try direct map (note that getBestMatchPattern handles it).\n\t\t\t// ... or, try to \"best match\" the whole skeleton.\n\t\t\tresult = getBestMatchPattern(\n\t\t\t\tcldr,\n\t\t\t\tskeleton\n\t\t\t);\n\t\t\tif ( result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// ... or, try to \"best match\" the date and time parts individually.\n\t\t\ttimeSkeleton = skeleton.split( /[^hHKkmsSAzZOvVXx]/ ).slice( -1 )[ 0 ];\n\t\t\tdateSkeleton = skeleton.split( /[^GyYuUrQqMLlwWdDFgEec]/ )[ 0 ];\n\t\t\tdateSkeleton = getBestMatchPattern(\n\t\t\t\tcldr,\n\t\t\t\tdateSkeleton\n\t\t\t);\n\t\t\ttimeSkeleton = getBestMatchPattern(\n\t\t\t\tcldr,\n\t\t\t\ttimeSkeleton\n\t\t\t);\n\n\t\t\tif ( /(MMMM|LLLL).*[Ec]/.test( dateSkeleton ) ) {\n\t\t\t\ttype = \"full\";\n\t\t\t} else if ( /MMMM|LLLL/.test( dateSkeleton ) ) {\n\t\t\t\ttype = \"long\";\n\t\t\t} else if ( /MMM|LLL/.test( dateSkeleton ) ) {\n\t\t\t\ttype = \"medium\";\n\t\t\t} else {\n\t\t\t\ttype = \"short\";\n\t\t\t}\n\n\t\t\tif ( dateSkeleton && timeSkeleton ) {\n\t\t\t\tresult = combineDateTime( type, dateSkeleton, timeSkeleton );\n\t\t\t} else {\n\t\t\t\tresult = dateSkeleton || timeSkeleton;\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase \"date\" in options:\n\t\tcase \"time\" in options:\n\t\t\tresult = cldr.main([\n\t\t\t\t\"dates/calendars/gregorian\",\n\t\t\t\t\"date\" in options ? \"dateFormats\" : \"timeFormats\",\n\t\t\t\t( options.date || options.time )\n\t\t\t]);\n\t\t\tbreak;\n\n\t\tcase \"datetime\" in options:\n\t\t\tresult = combineDateTime( options.datetime,\n\t\t\t\tcldr.main([ \"dates/calendars/gregorian/dateFormats\", options.datetime ]),\n\t\t\t\tcldr.main([ \"dates/calendars/gregorian/timeFormats\", options.datetime ])\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase \"raw\" in options:\n\t\t\tresult = options.raw;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow createErrorInvalidParameterValue({\n\t\t\t\tname: \"options\",\n\t\t\t\tvalue: options\n\t\t\t});\n\t}\n\n\treturn result;\n};\n\n\n\n\nvar dateWeekDays = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\n\n\n\n/**\n * firstDayOfWeek\n */\nvar dateFirstDayOfWeek = function( cldr ) {\n\treturn dateWeekDays.indexOf( cldr.supplemental.weekData.firstDay() );\n};\n\n\n\n\n/**\n * getTimeZoneName( length, type )\n */\nvar dateGetTimeZoneName = function( length, type, timeZone, cldr ) {\n\tvar metaZone, result;\n\n\tif ( !timeZone ) {\n\t\treturn;\n\t}\n\n\tresult = cldr.main([\n\t\t\"dates/timeZoneNames/zone\",\n\t\ttimeZone,\n\t\tlength < 4 ? \"short\" : \"long\",\n\t\ttype\n\t]);\n\n\tif ( result ) {\n\t\treturn result;\n\t}\n\n\t// The latest metazone data of the metazone array.\n\t// TODO expand to support the historic metazones based on the given date.\n\tmetaZone = cldr.supplemental([\n\t\t\"metaZones/metazoneInfo/timezone\", timeZone, 0,\n\t\t\"usesMetazone/_mzone\"\n\t]);\n\n\treturn cldr.main([\n\t\t\"dates/timeZoneNames/metazone\",\n\t\tmetaZone,\n\t\tlength < 4 ? \"short\" : \"long\",\n\t\ttype\n\t]);\n};\n\n\n\n\n/**\n * timezoneHourFormatShortH( hourFormat )\n *\n * @hourFormat [String]\n *\n * Unofficial deduction of the short hourFormat given time zone `hourFormat` element.\n * Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n *\n * Example:\n * - \"+HH.mm;-HH.mm\" => \"+H;-H\"\n * - \"+HH:mm;-HH:mm\" => \"+H;-H\"\n * - \"+HH:mm;−HH:mm\" => \"+H;−H\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+H:-H\"\n */\nvar dateTimezoneHourFormatH = function( hourFormat ) {\n\treturn hourFormat\n\t\t.split( \";\" )\n\t\t.map(function( format ) {\n\t\t\treturn format.slice( 0, format.indexOf( \"H\" ) + 1 );\n\t\t})\n\t\t.join( \";\" );\n};\n\n\n\n\n/**\n * timezoneHourFormatLongHm( hourFormat )\n *\n * @hourFormat [String]\n *\n * Unofficial deduction of the short hourFormat given time zone `hourFormat` element.\n * Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n *\n * Example (hFormat === \"H\"): (used for short Hm)\n * - \"+HH.mm;-HH.mm\" => \"+H.mm;-H.mm\"\n * - \"+HH:mm;-HH:mm\" => \"+H:mm;-H:mm\"\n * - \"+HH:mm;−HH:mm\" => \"+H:mm;−H:mm\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+Hmm:-Hmm\"\n *\n * Example (hFormat === \"HH\": (used for long Hm)\n * - \"+HH.mm;-HH.mm\" => \"+HH.mm;-HH.mm\"\n * - \"+HH:mm;-HH:mm\" => \"+HH:mm;-HH:mm\"\n * - \"+H:mm;-H:mm\" => \"+HH:mm;-HH:mm\"\n * - \"+HH:mm;−HH:mm\" => \"+HH:mm;−HH:mm\" (Note MINUS SIGN \\u2212)\n * - \"+HHmm;-HHmm\" => \"+HHmm:-HHmm\"\n */\nvar dateTimezoneHourFormatHm = function( hourFormat, hFormat ) {\n\treturn hourFormat\n\t\t.split( \";\" )\n\t\t.map(function( format ) {\n\t\t\tvar parts = format.split( /H+/ );\n\t\t\tparts.splice( 1, 0, hFormat );\n\t\t\treturn parts.join( \"\" );\n\t\t})\n\t\t.join( \";\" );\n};\n\n\n\n\nvar runtimeCacheDataBind = function( key, data ) {\n\tvar fn = function() {\n\t\treturn data;\n\t};\n\tfn.dataCacheKey = key;\n\treturn fn;\n};\n\n\n\n\n/**\n * properties( pattern, cldr )\n *\n * @pattern [String] raw pattern.\n * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n *\n * @cldr [Cldr instance].\n *\n * Return the properties given the pattern and cldr.\n *\n * TODO Support other calendar types.\n */\nvar dateFormatProperties = function( pattern, cldr, timeZone ) {\n\tvar properties = {\n\t\t\tnumberFormatters: {},\n\t\t\tpattern: pattern,\n\t\t\ttimeSeparator: numberSymbol( \"timeSeparator\", cldr )\n\t\t},\n\t\twidths = [ \"abbreviated\", \"wide\", \"narrow\" ];\n\n\tfunction setNumberFormatterPattern( pad ) {\n\t\tproperties.numberFormatters[ pad ] = stringPad( \"\", pad );\n\t}\n\n\tif ( timeZone ) {\n\t\tproperties.timeZoneData = runtimeCacheDataBind( \"iana/\" + timeZone, {\n\t\t\toffsets: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"offsets\" ]),\n\t\t\tuntils: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"untils\" ]),\n\t\t\tisdsts: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"isdsts\" ])\n\t\t});\n\t}\n\n\tpattern.replace( datePatternRe, function( current ) {\n\t\tvar aux, chr, daylightTzName, formatNumber, genericTzName, length, standardTzName;\n\n\t\tchr = current.charAt( 0 );\n\t\tlength = current.length;\n\n\t\tif ( chr === \"j\" ) {\n\n\t\t\t// Locale preferred hHKk.\n\t\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n\t\t\tproperties.preferredTime = chr = cldr.supplemental.timeData.preferred();\n\t\t}\n\n\t\t// ZZZZ: same as \"OOOO\".\n\t\tif ( chr === \"Z\" && length === 4 ) {\n\t\t\tchr = \"O\";\n\t\t\tlength = 4;\n\t\t}\n\n\t\t// z...zzz: \"{shortRegion}\", eg. \"PST\" or \"PDT\".\n\t\t// zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n\t\t// e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"z\" ) {\n\t\t\tstandardTzName = dateGetTimeZoneName( length, \"standard\", timeZone, cldr );\n\t\t\tdaylightTzName = dateGetTimeZoneName( length, \"daylight\", timeZone, cldr );\n\t\t\tif ( standardTzName ) {\n\t\t\t\tproperties.standardTzName = standardTzName;\n\t\t\t}\n\t\t\tif ( daylightTzName ) {\n\t\t\t\tproperties.daylightTzName = daylightTzName;\n\t\t\t}\n\n\t\t\t// Fall through the \"O\" format in case one name is missing.\n\t\t\tif ( !standardTzName || !daylightTzName ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tif ( length < 4 ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// v...vvv: \"{shortRegion}\", eg. \"PT\".\n\t\t// vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n\t\t// e.g., \"Pacific Time\"\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"v\" ) {\n\t\t\tgenericTzName = dateGetTimeZoneName( length, \"generic\", timeZone, cldr );\n\n\t\t\t// Fall back to \"V\" format.\n\t\t\tif ( !genericTzName ) {\n\t\t\t\tchr = \"V\";\n\t\t\t\tlength = 4;\n\t\t\t}\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\tproperties.eras = cldr.main([\n\t\t\t\t\t\"dates/calendars/gregorian/eras\",\n\t\t\t\t\tlength <= 3 ? \"eraAbbr\" : ( length === 4 ? \"eraNames\" : \"eraNarrow\" )\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"y\":\n\n\t\t\t\t// Plain year.\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\tcase \"Y\":\n\n\t\t\t\t// Year in \"Week of Year\"\n\t\t\t\tproperties.firstDay = dateFirstDayOfWeek( cldr );\n\t\t\t\tproperties.minDays = cldr.supplemental.weekData.minDays();\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\tcase \"u\": // Extended year. Need to be implemented.\n\t\t\tcase \"U\": // Cyclic year name. Need to be implemented.\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"year pattern `\" + chr + \"`\"\n\t\t\t\t});\n\n\t\t\t// Quarter\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tif ( !properties.quarters ) {\n\t\t\t\t\t\tproperties.quarters = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( !properties.quarters[ chr ] ) {\n\t\t\t\t\t\tproperties.quarters[ chr ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tproperties.quarters[ chr ][ length ] = cldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/quarters\",\n\t\t\t\t\t\tchr === \"Q\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tformatNumber = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tif ( !properties.months ) {\n\t\t\t\t\t\tproperties.months = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( !properties.months[ chr ] ) {\n\t\t\t\t\t\tproperties.months[ chr ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tproperties.months[ chr ][ length ] = cldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/months\",\n\t\t\t\t\t\tchr === \"M\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tformatNumber = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Week - Week of Year (w) or Week of Month (W).\n\t\t\tcase \"w\":\n\t\t\tcase \"W\":\n\t\t\t\tproperties.firstDay = dateFirstDayOfWeek( cldr );\n\t\t\t\tproperties.minDays = cldr.supplemental.weekData.minDays();\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"d\":\n\t\t\tcase \"D\":\n\t\t\tcase \"F\":\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\tcase \"g\":\n\n\t\t\t\t// Modified Julian day. Need to be implemented.\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"Julian day pattern `g`\"\n\t\t\t\t});\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\t\t\t\tif ( length <= 2 ) {\n\t\t\t\t\tproperties.firstDay = dateFirstDayOfWeek( cldr );\n\t\t\t\t\tformatNumber = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"E\":\n\t\t\t\tif ( !properties.days ) {\n\t\t\t\t\tproperties.days = {};\n\t\t\t\t}\n\t\t\t\tif ( !properties.days[ chr ] ) {\n\t\t\t\t\tproperties.days[ chr ] = {};\n\t\t\t\t}\n\t\t\t\tif ( length === 6 ) {\n\n\t\t\t\t\t// If short day names are not explicitly specified, abbreviated day names are\n\t\t\t\t\t// used instead.\n\t\t\t\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n\t\t\t\t\t// http://unicode.org/cldr/trac/ticket/6790\n\t\t\t\t\tproperties.days[ chr ][ length ] = cldr.main([\n\t\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t\tchr === \"c\" ? \"stand-alone\" : \"format\",\n\t\t\t\t\t\t\t\"short\"\n\t\t\t\t\t\t]) || cldr.main([\n\t\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t\tchr === \"c\" ? \"stand-alone\" : \"format\",\n\t\t\t\t\t\t\t\"abbreviated\"\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tproperties.days[ chr ][ length ] = cldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\tchr === \"c\" ? \"stand-alone\" : \"format\",\n\t\t\t\t\t\twidths[ length < 3 ? 0 : length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tproperties.dayPeriods = {\n\t\t\t\t\tam: cldr.main(\n\t\t\t\t\t\t\"dates/calendars/gregorian/dayPeriods/format/wide/am\"\n\t\t\t\t\t),\n\t\t\t\t\tpm: cldr.main(\n\t\t\t\t\t\t\"dates/calendars/gregorian/dayPeriods/format/wide/pm\"\n\t\t\t\t\t)\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\t// Hour\n\t\t\tcase \"h\": // 1-12\n\t\t\tcase \"H\": // 0-23\n\t\t\tcase \"K\": // 0-11\n\t\t\tcase \"k\": // 1-24\n\n\t\t\t// Minute\n\t\t\tcase \"m\":\n\n\t\t\t// Second\n\t\t\tcase \"s\":\n\t\t\tcase \"S\":\n\t\t\tcase \"A\":\n\t\t\t\tformatNumber = true;\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"v\":\n\t\t\t\tif ( length !== 1 && length !== 4 ) {\n\t\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\t\tfeature: \"timezone pattern `\" + pattern + \"`\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tproperties.genericTzName = genericTzName;\n\t\t\t\tbreak;\n\n\t\t\tcase \"V\":\n\n\t\t\t\tif ( length === 1 ) {\n\t\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\t\tfeature: \"timezone pattern `\" + pattern + \"`\"\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( timeZone ) {\n\t\t\t\t\tif ( length === 2 ) {\n\t\t\t\t\t\tproperties.timeZoneName = timeZone;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar timeZoneName,\n\t\t\t\t\t\texemplarCity = cldr.main([\n\t\t\t\t\t\t\t\"dates/timeZoneNames/zone\", timeZone, \"exemplarCity\"\n\t\t\t\t\t\t]);\n\n\t\t\t\t\tif ( length === 3 ) {\n\t\t\t\t\t\tif ( !exemplarCity ) {\n\t\t\t\t\t\t\texemplarCity = cldr.main([\n\t\t\t\t\t\t\t\t\"dates/timeZoneNames/zone/Etc/Unknown/exemplarCity\"\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeZoneName = exemplarCity;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( exemplarCity && length === 4 ) {\n\t\t\t\t\t\ttimeZoneName = formatMessage(\n\t\t\t\t\t\t\tcldr.main(\n\t\t\t\t\t\t\t\t\"dates/timeZoneNames/regionFormat\"\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t[ exemplarCity ]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( timeZoneName ) {\n\t\t\t\t\t\tproperties.timeZoneName = timeZoneName;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( current === \"v\" ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"O\":\n\n\t\t\t\t// O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n\t\t\t\t// OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n\t\t\t\tproperties.gmtFormat = cldr.main( \"dates/timeZoneNames/gmtFormat\" );\n\t\t\t\tproperties.gmtZeroFormat = cldr.main( \"dates/timeZoneNames/gmtZeroFormat\" );\n\n\t\t\t\t// Unofficial deduction of the hourFormat variations.\n\t\t\t\t// Official spec is pending resolution: http://unicode.org/cldr/trac/ticket/8293\n\t\t\t\taux = cldr.main( \"dates/timeZoneNames/hourFormat\" );\n\t\t\t\tproperties.hourFormat = length < 4 ?\n\t\t\t\t\t[ dateTimezoneHourFormatH( aux ), dateTimezoneHourFormatHm( aux, \"H\" ) ] :\n\t\t\t\t\tdateTimezoneHourFormatHm( aux, \"HH\" );\n\n\t\t\t/* falls through */\n\t\t\tcase \"Z\":\n\t\t\tcase \"X\":\n\t\t\tcase \"x\":\n\t\t\t\tsetNumberFormatterPattern( 1 );\n\t\t\t\tsetNumberFormatterPattern( 2 );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( formatNumber ) {\n\t\t\tsetNumberFormatterPattern( length );\n\t\t}\n\t});\n\n\treturn properties;\n};\n\n\n\n\nvar dateFormatterFn = function( dateToPartsFormatter ) {\n\treturn function dateFormatter( value ) {\n\t\treturn partsJoin( dateToPartsFormatter( value ));\n\t};\n};\n\n\n\n\n/**\n * parseProperties( cldr )\n *\n * @cldr [Cldr instance].\n *\n * @timeZone [String] FIXME.\n *\n * Return parser properties.\n */\nvar dateParseProperties = function( cldr, timeZone ) {\n\tvar properties = {\n\t\tpreferredTimeData: cldr.supplemental.timeData.preferred()\n\t};\n\n\tif ( timeZone ) {\n\t\tproperties.timeZoneData = runtimeCacheDataBind( \"iana/\" + timeZone, {\n\t\t\toffsets: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"offsets\" ]),\n\t\t\tuntils: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"untils\" ]),\n\t\t\tisdsts: cldr.get([ \"globalize-iana/zoneData\", timeZone, \"isdsts\" ])\n\t\t});\n\t}\n\n\treturn properties;\n};\n\n\nvar ZonedDateTime = (function() {\nfunction definePrivateProperty(object, property, value) {\n Object.defineProperty(object, property, {\n value: value\n });\n}\n\nfunction getUntilsIndex(original, untils) {\n var index = 0;\n var originalTime = original.getTime();\n\n // TODO Should we do binary search for improved performance?\n while (index < untils.length - 1 && originalTime >= untils[index]) {\n index++;\n }\n return index;\n}\n\nfunction setWrap(fn) {\n var offset1 = this.getTimezoneOffset();\n var ret = fn();\n this.original.setTime(new Date(this.getTime()));\n var offset2 = this.getTimezoneOffset();\n if (offset2 - offset1) {\n this.original.setMinutes(this.original.getMinutes() + offset2 - offset1);\n }\n return ret;\n}\n\nvar ZonedDateTime = function(date, timeZoneData) {\n definePrivateProperty(this, \"original\", new Date(date.getTime()));\n definePrivateProperty(this, \"local\", new Date(date.getTime()));\n definePrivateProperty(this, \"timeZoneData\", timeZoneData);\n definePrivateProperty(this, \"setWrap\", setWrap);\n if (!(timeZoneData.untils && timeZoneData.offsets && timeZoneData.isdsts)) {\n throw new Error(\"Invalid IANA data\");\n }\n this.setTime(this.local.getTime() - this.getTimezoneOffset() * 60 * 1000);\n};\n\nZonedDateTime.prototype.clone = function() {\n return new ZonedDateTime(this.original, this.timeZoneData);\n};\n\n// Date field getters.\n[\"getFullYear\", \"getMonth\", \"getDate\", \"getDay\", \"getHours\", \"getMinutes\",\n\"getSeconds\", \"getMilliseconds\"].forEach(function(method) {\n // Corresponding UTC method, e.g., \"getUTCFullYear\" if method === \"getFullYear\".\n var utcMethod = \"getUTC\" + method.substr(3);\n ZonedDateTime.prototype[method] = function() {\n return this.local[utcMethod]();\n };\n});\n\n// Note: Define .valueOf = .getTime for arithmetic operations like date1 - date2.\nZonedDateTime.prototype.valueOf =\nZonedDateTime.prototype.getTime = function() {\n return this.local.getTime() + this.getTimezoneOffset() * 60 * 1000;\n};\n\nZonedDateTime.prototype.getTimezoneOffset = function() {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n return this.timeZoneData.offsets[index];\n};\n\n// Date field setters.\n[\"setFullYear\", \"setMonth\", \"setDate\", \"setHours\", \"setMinutes\", \"setSeconds\", \"setMilliseconds\"].forEach(function(method) {\n // Corresponding UTC method, e.g., \"setUTCFullYear\" if method === \"setFullYear\".\n var utcMethod = \"setUTC\" + method.substr(3);\n ZonedDateTime.prototype[method] = function(value) {\n var local = this.local;\n // Note setWrap is needed for seconds and milliseconds just because\n // abs(value) could be >= a minute.\n return this.setWrap(function() {\n return local[utcMethod](value);\n });\n };\n});\n\nZonedDateTime.prototype.setTime = function(time) {\n return this.local.setTime(time);\n};\n\nZonedDateTime.prototype.isDST = function() {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n return Boolean(this.timeZoneData.isdsts[index]);\n};\n\nZonedDateTime.prototype.inspect = function() {\n var index = getUntilsIndex(this.original, this.timeZoneData.untils);\n var abbrs = this.timeZoneData.abbrs;\n return this.local.toISOString().replace(/Z$/, \"\") + \" \" +\n (abbrs && abbrs[index] + \" \" || (this.getTimezoneOffset() * -1) + \" \") +\n (this.isDST() ? \"(daylight savings)\" : \"\");\n};\n\nZonedDateTime.prototype.toDate = function() {\n return new Date(this.getTime());\n};\n\n// Type cast getters.\n[\"toISOString\", \"toJSON\", \"toUTCString\"].forEach(function(method) {\n ZonedDateTime.prototype[method] = function() {\n return this.toDate()[method]();\n };\n});\n\nreturn ZonedDateTime;\n}());\n\n\n/**\n * isLeapYear( year )\n *\n * @year [Number]\n *\n * Returns an indication whether the specified year is a leap year.\n */\nvar dateIsLeapYear = function( year ) {\n\treturn new Date( year, 1, 29 ).getMonth() === 1;\n};\n\n\n\n\n/**\n * lastDayOfMonth( date )\n *\n * @date [Date]\n *\n * Return the last day of the given date's month\n */\nvar dateLastDayOfMonth = function( date ) {\n\treturn new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate();\n};\n\n\n\n\n/**\n * startOf changes the input to the beginning of the given unit.\n *\n * For example, starting at the start of a day, resets hours, minutes\n * seconds and milliseconds to 0. Starting at the month does the same, but\n * also sets the date to 1.\n *\n * Returns the modified date\n */\nvar dateStartOf = function( date, unit ) {\n\tdate = date instanceof ZonedDateTime ? date.clone() : new Date( date.getTime() );\n\tswitch ( unit ) {\n\t\tcase \"year\":\n\t\t\tdate.setMonth( 0 );\n\t\t/* falls through */\n\t\tcase \"month\":\n\t\t\tdate.setDate( 1 );\n\t\t/* falls through */\n\t\tcase \"day\":\n\t\t\tdate.setHours( 0 );\n\t\t/* falls through */\n\t\tcase \"hour\":\n\t\t\tdate.setMinutes( 0 );\n\t\t/* falls through */\n\t\tcase \"minute\":\n\t\t\tdate.setSeconds( 0 );\n\t\t/* falls through */\n\t\tcase \"second\":\n\t\t\tdate.setMilliseconds( 0 );\n\t}\n\treturn date;\n};\n\n\n\n\n/**\n * Differently from native date.setDate(), this function returns a date whose\n * day remains inside the month boundaries. For example:\n *\n * setDate( FebDate, 31 ): a \"Feb 28\" date.\n * setDate( SepDate, 31 ): a \"Sep 30\" date.\n */\nvar dateSetDate = function( date, day ) {\n\tvar lastDay = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate();\n\n\tdate.setDate( day < 1 ? 1 : day < lastDay ? day : lastDay );\n};\n\n\n\n\n/**\n * Differently from native date.setMonth(), this function adjusts date if\n * needed, so final month is always the one set.\n *\n * setMonth( Jan31Date, 1 ): a \"Feb 28\" date.\n * setDate( Jan31Date, 8 ): a \"Sep 30\" date.\n */\nvar dateSetMonth = function( date, month ) {\n\tvar originalDate = date.getDate();\n\n\tdate.setDate( 1 );\n\tdate.setMonth( month );\n\tdateSetDate( date, originalDate );\n};\n\n\n\n\nvar outOfRange = function( value, low, high ) {\n\treturn value < low || value > high;\n};\n\n\n\n\n/**\n * parse( value, tokens, properties )\n *\n * @value [String] string date.\n *\n * @tokens [Object] tokens returned by date/tokenizer.\n *\n * @properties [Object] output returned by date/tokenizer-properties.\n *\n * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n */\nvar dateParse = function( _value, tokens, properties ) {\n\tvar amPm, day, daysOfYear, month, era, hour, hour12, timezoneOffset, valid,\n\t\tYEAR = 0,\n\t\tMONTH = 1,\n\t\tDAY = 2,\n\t\tHOUR = 3,\n\t\tMINUTE = 4,\n\t\tSECOND = 5,\n\t\tMILLISECONDS = 6,\n\t\tdate = new Date(),\n\t\ttruncateAt = [],\n\t\tunits = [ \"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"milliseconds\" ];\n\n\t// Create globalize date with given timezone data.\n\tif ( properties.timeZoneData ) {\n\t\tdate = new ZonedDateTime( date, properties.timeZoneData() );\n\t}\n\n\tif ( !tokens.length ) {\n\t\treturn null;\n\t}\n\n\tvalid = tokens.every(function( token ) {\n\t\tvar century, chr, value, length;\n\n\t\tif ( token.type === \"literal\" ) {\n\n\t\t\t// continue\n\t\t\treturn true;\n\t\t}\n\n\t\tchr = token.type.charAt( 0 );\n\t\tlength = token.type.length;\n\n\t\tif ( chr === \"j\" ) {\n\n\t\t\t// Locale preferred hHKk.\n\t\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n\t\t\tchr = properties.preferredTimeData;\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\ttruncateAt.push( YEAR );\n\t\t\t\tera = +token.value;\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"y\":\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( length === 2 ) {\n\t\t\t\t\tif ( outOfRange( value, 0, 99 ) ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// mimic dojo/date/locale: choose century to apply, according to a sliding\n\t\t\t\t\t// window of 80 years before and 20 years after present year.\n\t\t\t\t\tcentury = Math.floor( date.getFullYear() / 100 ) * 100;\n\t\t\t\t\tvalue += century;\n\t\t\t\t\tif ( value > date.getFullYear() + 20 ) {\n\t\t\t\t\t\tvalue -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdate.setFullYear( value );\n\t\t\t\ttruncateAt.push( YEAR );\n\t\t\t\tbreak;\n\n\t\t\tcase \"Y\": // Year in \"Week of Year\"\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"year pattern `\" + chr + \"`\"\n\t\t\t\t});\n\n\t\t\t// Quarter (skip)\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tif ( length <= 2 ) {\n\t\t\t\t\tvalue = token.value;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = +token.value;\n\t\t\t\t}\n\t\t\t\tif ( outOfRange( value, 1, 12 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Setting the month later so that we have the correct year and can determine\n\t\t\t\t// the correct last day of February in case of leap year.\n\t\t\t\tmonth = value;\n\t\t\t\ttruncateAt.push( MONTH );\n\t\t\t\tbreak;\n\n\t\t\t// Week (skip)\n\t\t\tcase \"w\": // Week of Year.\n\t\t\tcase \"W\": // Week of Month.\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"d\":\n\t\t\t\tday = token.value;\n\t\t\t\ttruncateAt.push( DAY );\n\t\t\t\tbreak;\n\n\t\t\tcase \"D\":\n\t\t\t\tdaysOfYear = token.value;\n\t\t\t\ttruncateAt.push( DAY );\n\t\t\t\tbreak;\n\n\t\t\tcase \"F\":\n\n\t\t\t\t// Day of Week in month. eg. 2nd Wed in July.\n\t\t\t\t// Skip\n\t\t\t\tbreak;\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\t\t\tcase \"E\":\n\n\t\t\t\t// Skip.\n\t\t\t\t// value = arrayIndexOf( dateWeekDays, token.value );\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tamPm = token.value;\n\t\t\t\tbreak;\n\n\t\t\t// Hour\n\t\t\tcase \"h\": // 1-12\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 1, 12 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thour = hour12 = true;\n\t\t\t\tdate.setHours( value === 12 ? 0 : value );\n\t\t\t\ttruncateAt.push( HOUR );\n\t\t\t\tbreak;\n\n\t\t\tcase \"K\": // 0-11\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 0, 11 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thour = hour12 = true;\n\t\t\t\tdate.setHours( value );\n\t\t\t\ttruncateAt.push( HOUR );\n\t\t\t\tbreak;\n\n\t\t\tcase \"k\": // 1-24\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 1, 24 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thour = true;\n\t\t\t\tdate.setHours( value === 24 ? 0 : value );\n\t\t\t\ttruncateAt.push( HOUR );\n\t\t\t\tbreak;\n\n\t\t\tcase \"H\": // 0-23\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 0, 23 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thour = true;\n\t\t\t\tdate.setHours( value );\n\t\t\t\ttruncateAt.push( HOUR );\n\t\t\t\tbreak;\n\n\t\t\t// Minute\n\t\t\tcase \"m\":\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 0, 59 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdate.setMinutes( value );\n\t\t\t\ttruncateAt.push( MINUTE );\n\t\t\t\tbreak;\n\n\t\t\t// Second\n\t\t\tcase \"s\":\n\t\t\t\tvalue = token.value;\n\t\t\t\tif ( outOfRange( value, 0, 59 ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdate.setSeconds( value );\n\t\t\t\ttruncateAt.push( SECOND );\n\t\t\t\tbreak;\n\n\t\t\tcase \"A\":\n\t\t\t\tdate.setHours( 0 );\n\t\t\t\tdate.setMinutes( 0 );\n\t\t\t\tdate.setSeconds( 0 );\n\n\t\t\t/* falls through */\n\t\t\tcase \"S\":\n\t\t\t\tvalue = Math.round( token.value * Math.pow( 10, 3 - length ) );\n\t\t\t\tdate.setMilliseconds( value );\n\t\t\t\ttruncateAt.push( MILLISECONDS );\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"z\":\n\t\t\tcase \"Z\":\n\t\t\tcase \"O\":\n\t\t\tcase \"v\":\n\t\t\tcase \"V\":\n\t\t\tcase \"X\":\n\t\t\tcase \"x\":\n\t\t\t\tif ( typeof token.value === \"number\" ) {\n\t\t\t\t\ttimezoneOffset = token.value;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn true;\n\t});\n\n\tif ( !valid ) {\n\t\treturn null;\n\t}\n\n\t// 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null\n\t// if amPm && !hour12 || !amPm && hour12.\n\tif ( hour && !( !amPm ^ hour12 ) ) {\n\t\treturn null;\n\t}\n\n\tif ( era === 0 ) {\n\n\t\t// 1 BC = year 0\n\t\tdate.setFullYear( date.getFullYear() * -1 + 1 );\n\t}\n\n\tif ( month !== undefined ) {\n\t\tdateSetMonth( date, month - 1 );\n\t}\n\n\tif ( day !== undefined ) {\n\t\tif ( outOfRange( day, 1, dateLastDayOfMonth( date ) ) ) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setDate( day );\n\t} else if ( daysOfYear !== undefined ) {\n\t\tif ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setMonth( 0 );\n\t\tdate.setDate( daysOfYear );\n\t}\n\n\tif ( hour12 && amPm === \"pm\" ) {\n\t\tdate.setHours( date.getHours() + 12 );\n\t}\n\n\tif ( timezoneOffset !== undefined ) {\n\t\tdate.setMinutes( date.getMinutes() + timezoneOffset - date.getTimezoneOffset() );\n\t}\n\n\t// Truncate date at the most precise unit defined. Eg.\n\t// If value is \"12/31\", and pattern is \"MM/dd\":\n\t// => new Date( , 12, 31, 0, 0, 0, 0 );\n\ttruncateAt = Math.max.apply( null, truncateAt );\n\tdate = dateStartOf( date, units[ truncateAt ] );\n\n\t// Get date back from globalize date.\n\tif ( date instanceof ZonedDateTime ) {\n\t\tdate = date.toDate();\n\t}\n\n\treturn date;\n};\n\n\n/* eslint-disable no-unused-expressions */\n\n\n\n/**\n * tokenizer( value, numberParser, properties )\n *\n * @value [String] string date.\n *\n * @numberParser [Function]\n *\n * @properties [Object] output returned by date/tokenizer-properties.\n *\n * Returns an Array of tokens, eg. value \"5 o'clock PM\", pattern \"h 'o''clock' a\":\n * [{\n * type: \"h\",\n * lexeme: \"5\"\n * }, {\n * type: \"literal\",\n * lexeme: \" \"\n * }, {\n * type: \"literal\",\n * lexeme: \"o'clock\"\n * }, {\n * type: \"literal\",\n * lexeme: \" \"\n * }, {\n * type: \"a\",\n * lexeme: \"PM\",\n * value: \"pm\"\n * }]\n *\n * OBS: lexeme's are always String and may return invalid ranges depending of the token type.\n * Eg. \"99\" for month number.\n *\n * Return an empty Array when not successfully parsed.\n */\nvar dateTokenizer = function( value, numberParser, properties ) {\n\tvar digitsRe, valid,\n\t\ttokens = [],\n\t\twidths = [ \"abbreviated\", \"wide\", \"narrow\" ];\n\n\tdigitsRe = properties.digitsRe;\n\tvalue = looseMatching( value );\n\n\tvalid = properties.pattern.match( datePatternRe ).every(function( current ) {\n\t\tvar aux, chr, length, numeric, tokenRe,\n\t\t\ttoken = {};\n\n\t\tfunction hourFormatParse( tokenRe, numberParser ) {\n\t\t\tvar aux, isPositive,\n\t\t\t\tmatch = value.match( tokenRe );\n\t\t\tnumberParser = numberParser || function( value ) {\n\t\t\t\treturn +value;\n\t\t\t};\n\n\t\t\tif ( !match ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tisPositive = match[ 1 ];\n\n\t\t\t// hourFormat containing H only, e.g., `+H;-H`\n\t\t\tif ( match.length < 6 ) {\n\t\t\t\taux = isPositive ? 1 : 3;\n\t\t\t\ttoken.value = numberParser( match[ aux ] ) * 60;\n\n\t\t\t// hourFormat containing H and m, e.g., `+HHmm;-HHmm`\n\t\t\t} else if ( match.length < 10 ) {\n\t\t\t\taux = isPositive ? [ 1, 3 ] : [ 5, 7 ];\n\t\t\t\ttoken.value = numberParser( match[ aux[ 0 ] ] ) * 60 +\n\t\t\t\t\tnumberParser( match[ aux[ 1 ] ] );\n\n\t\t\t// hourFormat containing H, m, and s e.g., `+HHmmss;-HHmmss`\n\t\t\t} else {\n\t\t\t\taux = isPositive ? [ 1, 3, 5 ] : [ 7, 9, 11 ];\n\t\t\t\ttoken.value = numberParser( match[ aux[ 0 ] ] ) * 60 +\n\t\t\t\t\tnumberParser( match[ aux[ 1 ] ] ) +\n\t\t\t\t\tnumberParser( match[ aux[ 2 ] ] ) / 60;\n\t\t\t}\n\n\t\t\tif ( isPositive ) {\n\t\t\t\ttoken.value *= -1;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tfunction oneDigitIfLengthOne() {\n\t\t\tif ( length === 1 ) {\n\n\t\t\t\t// Unicode equivalent to /\\d/\n\t\t\t\tnumeric = true;\n\t\t\t\treturn tokenRe = digitsRe;\n\t\t\t}\n\t\t}\n\n\t\tfunction oneOrTwoDigitsIfLengthOne() {\n\t\t\tif ( length === 1 ) {\n\n\t\t\t\t// Unicode equivalent to /\\d\\d?/\n\t\t\t\tnumeric = true;\n\t\t\t\treturn tokenRe = new RegExp( \"^(\" + digitsRe.source + \"){1,2}\" );\n\t\t\t}\n\t\t}\n\n\t\tfunction oneOrTwoDigitsIfLengthOneOrTwo() {\n\t\t\tif ( length === 1 || length === 2 ) {\n\n\t\t\t\t// Unicode equivalent to /\\d\\d?/\n\t\t\t\tnumeric = true;\n\t\t\t\treturn tokenRe = new RegExp( \"^(\" + digitsRe.source + \"){1,2}\" );\n\t\t\t}\n\t\t}\n\n\t\tfunction twoDigitsIfLengthTwo() {\n\t\t\tif ( length === 2 ) {\n\n\t\t\t\t// Unicode equivalent to /\\d\\d/\n\t\t\t\tnumeric = true;\n\t\t\t\treturn tokenRe = new RegExp( \"^(\" + digitsRe.source + \"){2}\" );\n\t\t\t}\n\t\t}\n\n\t\t// Brute-force test every locale entry in an attempt to match the given value.\n\t\t// Return the first found one (and set token accordingly), or null.\n\t\tfunction lookup( path ) {\n\t\t\tvar array = properties[ path.join( \"/\" ) ];\n\n\t\t\tif ( !array ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// array of pairs [key, value] sorted by desc value length.\n\t\t\tarray.some(function( item ) {\n\t\t\t\tvar valueRe = item[ 1 ];\n\t\t\t\tif ( valueRe.test( value ) ) {\n\t\t\t\t\ttoken.value = item[ 0 ];\n\t\t\t\t\ttokenRe = item[ 1 ];\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\ttoken.type = current;\n\t\tchr = current.charAt( 0 );\n\t\tlength = current.length;\n\n\t\tif ( chr === \"Z\" ) {\n\n\t\t\t// Z..ZZZ: same as \"xxxx\".\n\t\t\tif ( length < 4 ) {\n\t\t\t\tchr = \"x\";\n\t\t\t\tlength = 4;\n\n\t\t\t// ZZZZ: same as \"OOOO\".\n\t\t\t} else if ( length < 5 ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tlength = 4;\n\n\t\t\t// ZZZZZ: same as \"XXXXX\"\n\t\t\t} else {\n\t\t\t\tchr = \"X\";\n\t\t\t\tlength = 5;\n\t\t\t}\n\t\t}\n\n\t\tif ( chr === \"z\" ) {\n\t\t\tif ( properties.standardOrDaylightTzName ) {\n\t\t\t\ttoken.value = null;\n\t\t\t\ttokenRe = properties.standardOrDaylightTzName;\n\t\t\t}\n\t\t}\n\n\t\t// v...vvv: \"{shortRegion}\", eg. \"PT\".\n\t\t// vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n\t\t// e.g., \"Pacific Time\"\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"v\" ) {\n\t\t\tif ( properties.genericTzName ) {\n\t\t\t\ttoken.value = null;\n\t\t\t\ttokenRe = properties.genericTzName;\n\n\t\t\t// Fall back to \"V\" format.\n\t\t\t} else {\n\t\t\t\tchr = \"V\";\n\t\t\t\tlength = 4;\n\t\t\t}\n\t\t}\n\n\t\tif ( chr === \"V\" && properties.timeZoneName ) {\n\t\t\ttoken.value = length === 2 ? properties.timeZoneName : null;\n\t\t\ttokenRe = properties.timeZoneNameRe;\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\tlookup([\n\t\t\t\t\t\"gregorian/eras\",\n\t\t\t\t\tlength <= 3 ? \"eraAbbr\" : ( length === 4 ? \"eraNames\" : \"eraNarrow\" )\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"y\":\n\t\t\tcase \"Y\":\n\t\t\t\tnumeric = true;\n\n\t\t\t\t// number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ...\n\t\t\t\tif ( length === 1 ) {\n\n\t\t\t\t\t// Unicode equivalent to /\\d+/.\n\t\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \")+\" );\n\t\t\t\t} else if ( length === 2 ) {\n\n\t\t\t\t\t// Lenient parsing: there's no year pattern to indicate non-zero-padded 2-digits\n\t\t\t\t\t// year, so parser accepts both zero-padded and non-zero-padded for `yy`.\n\t\t\t\t\t//\n\t\t\t\t\t// Unicode equivalent to /\\d\\d?/\n\t\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){1,2}\" );\n\t\t\t\t} else {\n\n\t\t\t\t\t// Unicode equivalent to /\\d{length,}/\n\t\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){\" + length + \",}\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Quarter\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\n\t\t\t\t// number l=1:{1}, l=2:{2}.\n\t\t\t\t// lookup l=3...\n\t\t\t\toneDigitIfLengthOne() || twoDigitsIfLengthTwo() ||\n\t\t\t\t\tlookup([\n\t\t\t\t\t\t\"gregorian/quarters\",\n\t\t\t\t\t\tchr === \"Q\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\n\t\t\t\t// number l=1:{1,2}, l=2:{2}.\n\t\t\t\t// lookup l=3...\n\t\t\t\t//\n\t\t\t\t// Lenient parsing: skeleton \"yMd\" (i.e., one M) may include MM for the pattern,\n\t\t\t\t// therefore parser accepts both zero-padded and non-zero-padded for M and MM.\n\t\t\t\t// Similar for L.\n\t\t\t\toneOrTwoDigitsIfLengthOneOrTwo() || lookup([\n\t\t\t\t\t\"gregorian/months\",\n\t\t\t\t\tchr === \"M\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"D\":\n\n\t\t\t\t// number {l,3}.\n\t\t\t\tif ( length <= 3 ) {\n\n\t\t\t\t\t// Equivalent to /\\d{length,3}/\n\t\t\t\t\tnumeric = true;\n\t\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){\" + length + \",3}\" );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"W\":\n\t\t\tcase \"F\":\n\n\t\t\t\t// number l=1:{1}.\n\t\t\t\toneDigitIfLengthOne();\n\t\t\t\tbreak;\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\n\t\t\t\t// number l=1:{1}, l=2:{2}.\n\t\t\t\t// lookup for length >=3.\n\t\t\t\tif ( length <= 2 ) {\n\t\t\t\t\toneDigitIfLengthOne() || twoDigitsIfLengthTwo();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"E\":\n\t\t\t\tif ( length === 6 ) {\n\n\t\t\t\t\t// Note: if short day names are not explicitly specified, abbreviated day\n\t\t\t\t\t// names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n\t\t\t\t\tlookup([\n\t\t\t\t\t\t\"gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\t\"short\"\n\t\t\t\t\t]) || lookup([\n\t\t\t\t\t\t\"gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\t\"abbreviated\"\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tlookup([\n\t\t\t\t\t\t\"gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\twidths[ length < 3 ? 0 : length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tlookup([\n\t\t\t\t\t\"gregorian/dayPeriods/format/wide\"\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Week\n\t\t\tcase \"w\":\n\n\t\t\t\t// number l1:{1,2}, l2:{2}.\n\t\t\t\toneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo();\n\t\t\t\tbreak;\n\n\t\t\t// Day, Hour, Minute, or Second\n\t\t\tcase \"d\":\n\t\t\tcase \"h\":\n\t\t\tcase \"H\":\n\t\t\tcase \"K\":\n\t\t\tcase \"k\":\n\t\t\tcase \"j\":\n\t\t\tcase \"m\":\n\t\t\tcase \"s\":\n\n\t\t\t\t// number l1:{1,2}, l2:{2}.\n\t\t\t\t//\n\t\t\t\t// Lenient parsing:\n\t\t\t\t// - skeleton \"hms\" (i.e., one m) always includes mm for the pattern, i.e., it's\n\t\t\t\t// impossible to use a different skeleton to parse non-zero-padded minutes,\n\t\t\t\t// therefore parser accepts both zero-padded and non-zero-padded for m. Similar\n\t\t\t\t// for seconds s.\n\t\t\t\t// - skeleton \"hms\" (i.e., one h) may include h or hh for the pattern, i.e., it's\n\t\t\t\t// impossible to use a different skeleton to parser non-zero-padded hours for some\n\t\t\t\t// locales, therefore parser accepts both zero-padded and non-zero-padded for h.\n\t\t\t\t// Similar for d (in skeleton yMd).\n\t\t\t\toneOrTwoDigitsIfLengthOneOrTwo();\n\t\t\t\tbreak;\n\n\t\t\tcase \"S\":\n\n\t\t\t\t// number {l}.\n\n\t\t\t\t// Unicode equivalent to /\\d{length}/\n\t\t\t\tnumeric = true;\n\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){\" + length + \"}\" );\n\t\t\t\tbreak;\n\n\t\t\tcase \"A\":\n\n\t\t\t\t// number {l+5}.\n\n\t\t\t\t// Unicode equivalent to /\\d{length+5}/\n\t\t\t\tnumeric = true;\n\t\t\t\ttokenRe = new RegExp( \"^(\" + digitsRe.source + \"){\" + ( length + 5 ) + \"}\" );\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"v\":\n\t\t\tcase \"V\":\n\t\t\tcase \"z\":\n\t\t\t\tif ( tokenRe && tokenRe.test( value ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( chr === \"V\" && length === 2 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"O\":\n\n\t\t\t\t// O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n\t\t\t\t// OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n\t\t\t\tif ( value === properties[ \"timeZoneNames/gmtZeroFormat\" ] ) {\n\t\t\t\t\ttoken.value = 0;\n\t\t\t\t\ttokenRe = properties[ \"timeZoneNames/gmtZeroFormatRe\" ];\n\t\t\t\t} else {\n\t\t\t\t\taux = properties[ \"timeZoneNames/hourFormat\" ].some(function( hourFormatRe ) {\n\t\t\t\t\t\tif ( hourFormatParse( hourFormatRe, numberParser ) ) {\n\t\t\t\t\t\t\ttokenRe = hourFormatRe;\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif ( !aux ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"X\":\n\n\t\t\t\t// Same as x*, except it uses \"Z\" for zero offset.\n\t\t\t\tif ( value === \"Z\" ) {\n\t\t\t\t\ttoken.value = 0;\n\t\t\t\t\ttokenRe = /^Z/;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"x\":\n\n\t\t\t\t// x: hourFormat(\"+HH[mm];-HH[mm]\")\n\t\t\t\t// xx: hourFormat(\"+HHmm;-HHmm\")\n\t\t\t\t// xxx: hourFormat(\"+HH:mm;-HH:mm\")\n\t\t\t\t// xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n\t\t\t\t// xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n\t\t\t\taux = properties.x.some(function( hourFormatRe ) {\n\t\t\t\t\tif ( hourFormatParse( hourFormatRe ) ) {\n\t\t\t\t\t\ttokenRe = hourFormatRe;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif ( !aux ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\t\ttoken.type = \"literal\";\n\t\t\t\ttokenRe = new RegExp( \"^\" + regexpEscape( removeLiteralQuotes( current ) ) );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\ttoken.type = \"literal\";\n\t\t\t\ttokenRe = new RegExp( \"^\" + regexpEscape( current ) );\n\t\t}\n\n\t\tif ( !tokenRe ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Get lexeme and consume it.\n\t\tvalue = value.replace( tokenRe, function( lexeme ) {\n\t\t\ttoken.lexeme = lexeme;\n\t\t\tif ( numeric ) {\n\t\t\t\ttoken.value = numberParser( lexeme );\n\t\t\t}\n\t\t\treturn \"\";\n\t\t});\n\n\t\tif ( !token.lexeme ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( numeric && isNaN( token.value ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttokens.push( token );\n\t\treturn true;\n\t});\n\n\tif ( value !== \"\" ) {\n\t\tvalid = false;\n\t}\n\n\treturn valid ? tokens : [];\n};\n\n\n\n\nvar dateParserFn = function( numberParser, parseProperties, tokenizerProperties ) {\n\treturn function dateParser( value ) {\n\t\tvar tokens;\n\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeString( value, \"value\" );\n\n\t\ttokens = dateTokenizer( value, numberParser, tokenizerProperties );\n\t\treturn dateParse( value, tokens, parseProperties ) || null;\n\t};\n};\n\n\n\n\nvar objectFilter = function( object, testRe ) {\n\tvar key,\n\t\tcopy = {};\n\n\tfor ( key in object ) {\n\t\tif ( testRe.test( key ) ) {\n\t\t\tcopy[ key ] = object[ key ];\n\t\t}\n\t}\n\n\treturn copy;\n};\n\n\n\n\n/**\n * tokenizerProperties( pattern, cldr )\n *\n * @pattern [String] raw pattern.\n *\n * @cldr [Cldr instance].\n *\n * Return Object with data that will be used by tokenizer.\n */\nvar dateTokenizerProperties = function( pattern, cldr, timeZone ) {\n\tvar digitsReSource,\n\t\tproperties = {\n\t\t\tpattern: looseMatching( pattern )\n\t\t},\n\t\ttimeSeparator = numberSymbol( \"timeSeparator\", cldr ),\n\t\twidths = [ \"abbreviated\", \"wide\", \"narrow\" ];\n\n\tdigitsReSource = numberNumberingSystemDigitsMap( cldr );\n\tdigitsReSource = digitsReSource ? \"[\" + digitsReSource + \"]\" : \"\\\\d\";\n\tproperties.digitsRe = new RegExp( digitsReSource );\n\n\t// Transform:\n\t// - \"+H;-H\" -> /\\+(\\d\\d?)|-(\\d\\d?)/\n\t// - \"+HH;-HH\" -> /\\+(\\d\\d)|-(\\d\\d)/\n\t// - \"+HHmm;-HHmm\" -> /\\+(\\d\\d)(\\d\\d)|-(\\d\\d)(\\d\\d)/\n\t// - \"+HH:mm;-HH:mm\" -> /\\+(\\d\\d):(\\d\\d)|-(\\d\\d):(\\d\\d)/\n\t//\n\t// If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.:\n\t// - \"+H;-H\" -> /GMT\\+(\\d\\d?)|GMT-(\\d\\d?)/\n\tfunction hourFormatRe( hourFormat, gmtFormat, digitsReSource, timeSeparator ) {\n\t\tvar re;\n\n\t\tif ( !digitsReSource ) {\n\t\t\tdigitsReSource = \"\\\\d\";\n\t\t}\n\t\tif ( !gmtFormat ) {\n\t\t\tgmtFormat = \"{0}\";\n\t\t}\n\n\t\tre = hourFormat\n\t\t\t.replace( \"+\", \"\\\\+\" )\n\n\t\t\t// Unicode equivalent to (\\\\d\\\\d)\n\t\t\t.replace( /HH|mm|ss/g, \"((\" + digitsReSource + \"){2})\" )\n\n\t\t\t// Unicode equivalent to (\\\\d\\\\d?)\n\t\t\t.replace( /H|m/g, \"((\" + digitsReSource + \"){1,2})\" );\n\n\t\tif ( timeSeparator ) {\n\t\t\tre = re.replace( /:/g, timeSeparator );\n\t\t}\n\n\t\tre = re.split( \";\" ).map(function( part ) {\n\t\t\treturn gmtFormat.replace( \"{0}\", part );\n\t\t}).join( \"|\" );\n\n\t\treturn new RegExp( \"^\" + re );\n\t}\n\n\tfunction populateProperties( path, value ) {\n\n\t\t// Skip\n\t\tvar skipRe = /(timeZoneNames\\/zone|supplemental\\/metaZones|timeZoneNames\\/metazone|timeZoneNames\\/regionFormat|timeZoneNames\\/gmtFormat)/;\n\t\tif ( skipRe.test( path ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !value ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// The `dates` and `calendars` trim's purpose is to reduce properties' key size only.\n\t\tpath = path.replace( /^.*\\/dates\\//, \"\" ).replace( /calendars\\//, \"\" );\n\n\t\t// Specific filter for \"gregorian/dayPeriods/format/wide\".\n\t\tif ( path === \"gregorian/dayPeriods/format/wide\" ) {\n\t\t\tvalue = objectFilter( value, /^am|^pm/ );\n\t\t}\n\n\t\t// Transform object into array of pairs [key, /value/], sort by desc value length.\n\t\tif ( isPlainObject( value ) ) {\n\t\t\tvalue = Object.keys( value ).map(function( key ) {\n\t\t\t\treturn [ key, new RegExp( \"^\" + regexpEscape( looseMatching( value[ key ] ) ) ) ];\n\t\t\t}).sort(function( a, b ) {\n\t\t\t\treturn b[ 1 ].source.length - a[ 1 ].source.length;\n\t\t\t});\n\n\t\t// If typeof value === \"string\".\n\t\t} else {\n\t\t\tvalue = looseMatching( value );\n\t\t}\n\t\tproperties[ path ] = value;\n\t}\n\n\tfunction regexpSourceSomeTerm( terms ) {\n\t\treturn \"(\" + terms.filter(function( item ) {\n\t\t\treturn item;\n\t\t}).reduce(function( memo, item ) {\n\t\t\treturn memo + \"|\" + item;\n\t\t}) + \")\";\n\t}\n\n\tcldr.on( \"get\", populateProperties );\n\n\tpattern.match( datePatternRe ).forEach(function( current ) {\n\t\tvar aux, chr, daylightTzName, gmtFormat, length, standardTzName;\n\n\t\tchr = current.charAt( 0 );\n\t\tlength = current.length;\n\n\t\tif ( chr === \"Z\" ) {\n\t\t\tif ( length < 5 ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tlength = 4;\n\t\t\t} else {\n\t\t\t\tchr = \"X\";\n\t\t\t\tlength = 5;\n\t\t\t}\n\t\t}\n\n\t\t// z...zzz: \"{shortRegion}\", eg. \"PST\" or \"PDT\".\n\t\t// zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n\t\t// e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"z\" ) {\n\t\t\tstandardTzName = dateGetTimeZoneName( length, \"standard\", timeZone, cldr );\n\t\t\tdaylightTzName = dateGetTimeZoneName( length, \"daylight\", timeZone, cldr );\n\t\t\tif ( standardTzName ) {\n\t\t\t\tstandardTzName = regexpEscape( looseMatching( standardTzName ) );\n\t\t\t}\n\t\t\tif ( daylightTzName ) {\n\t\t\t\tdaylightTzName = regexpEscape( looseMatching( daylightTzName ) );\n\t\t\t}\n\t\t\tif ( standardTzName || daylightTzName ) {\n\t\t\t\tproperties.standardOrDaylightTzName = new RegExp(\n\t\t\t\t\t\"^\" + regexpSourceSomeTerm([ standardTzName, daylightTzName ])\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Fall through the \"O\" format in case one name is missing.\n\t\t\tif ( !standardTzName || !daylightTzName ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tif ( length < 4 ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// v...vvv: \"{shortRegion}\", eg. \"PT\".\n\t\t// vvvv: \"{regionName} {Time}\" or \"{regionName} {Time}\",\n\t\t// e.g., \"Pacific Time\"\n\t\t// http://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns\n\t\tif ( chr === \"v\" ) {\n\t\t\tif ( length !== 1 && length !== 4 ) {\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"timezone pattern `\" + pattern + \"`\"\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar genericTzName = dateGetTimeZoneName( length, \"generic\", timeZone, cldr );\n\t\t\tif ( genericTzName ) {\n\t\t\t\tproperties.genericTzName = new RegExp(\n\t\t\t\t\t\"^\" + regexpEscape( looseMatching( genericTzName ) )\n\t\t\t\t);\n\t\t\t\tchr = \"O\";\n\n\t\t\t// Fall back to \"V\" format.\n\t\t\t} else {\n\t\t\t\tchr = \"V\";\n\t\t\t\tlength = 4;\n\t\t\t}\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\tcldr.main([\n\t\t\t\t\t\"dates/calendars/gregorian/eras\",\n\t\t\t\t\tlength <= 3 ? \"eraAbbr\" : ( length === 4 ? \"eraNames\" : \"eraNarrow\" )\n\t\t\t\t]);\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"u\": // Extended year. Need to be implemented.\n\t\t\tcase \"U\": // Cyclic year name. Need to be implemented.\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"year pattern `\" + chr + \"`\"\n\t\t\t\t});\n\n\t\t\t// Quarter\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tcldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/quarters\",\n\t\t\t\t\t\tchr === \"Q\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\n\t\t\t\t// number l=1:{1,2}, l=2:{2}.\n\t\t\t\t// lookup l=3...\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tcldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/months\",\n\t\t\t\t\t\tchr === \"M\" ? \"format\" : \"stand-alone\",\n\t\t\t\t\t\twidths[ length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"g\":\n\n\t\t\t\t// Modified Julian day. Need to be implemented.\n\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\tfeature: \"Julian day pattern `g`\"\n\t\t\t\t});\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\n\t\t\t\t// lookup for length >=3.\n\t\t\t\tif ( length <= 2 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"E\":\n\t\t\t\tif ( length === 6 ) {\n\n\t\t\t\t\t// Note: if short day names are not explicitly specified, abbreviated day\n\t\t\t\t\t// names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras\n\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\tcldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\t\"short\"\n\t\t\t\t\t]) || cldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\t\"abbreviated\"\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tcldr.main([\n\t\t\t\t\t\t\"dates/calendars/gregorian/days\",\n\t\t\t\t\t\t[ chr === \"c\" ? \"stand-alone\" : \"format\" ],\n\t\t\t\t\t\twidths[ length < 3 ? 0 : length - 3 ]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tcldr.main(\n\t\t\t\t\t\"dates/calendars/gregorian/dayPeriods/format/wide\"\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"V\":\n\n\t\t\t\tif ( length === 1 ) {\n\t\t\t\t\tthrow createErrorUnsupportedFeature({\n\t\t\t\t\t\tfeature: \"timezone pattern `\" + pattern + \"`\"\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( timeZone ) {\n\t\t\t\t\tif ( length === 2 ) {\n\n\t\t\t\t\t\t// Skip looseMatching processing since timeZone is a canonical posix value.\n\t\t\t\t\t\tproperties.timeZoneName = timeZone;\n\t\t\t\t\t\tproperties.timeZoneNameRe = new RegExp( \"^\" + regexpEscape( timeZone ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar timeZoneName,\n\t\t\t\t\t\texemplarCity = cldr.main([\n\t\t\t\t\t\t\t\"dates/timeZoneNames/zone\", timeZone, \"exemplarCity\"\n\t\t\t\t\t\t]);\n\n\t\t\t\t\tif ( length === 3 ) {\n\t\t\t\t\t\tif ( !exemplarCity ) {\n\t\t\t\t\t\t\texemplarCity = cldr.main([\n\t\t\t\t\t\t\t\t\"dates/timeZoneNames/zone/Etc/Unknown/exemplarCity\"\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeZoneName = exemplarCity;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( exemplarCity && length === 4 ) {\n\t\t\t\t\t\ttimeZoneName = formatMessage(\n\t\t\t\t\t\t\tcldr.main(\n\t\t\t\t\t\t\t\t\"dates/timeZoneNames/regionFormat\"\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t[ exemplarCity ]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( timeZoneName ) {\n\t\t\t\t\t\ttimeZoneName = looseMatching( timeZoneName );\n\t\t\t\t\t\tproperties.timeZoneName = timeZoneName;\n\t\t\t\t\t\tproperties.timeZoneNameRe = new RegExp(\n\t\t\t\t\t\t\t\"^\" + regexpEscape( timeZoneName )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( current === \"v\" ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"z\":\n\t\t\tcase \"O\":\n\t\t\t\tgmtFormat = cldr.main( \"dates/timeZoneNames/gmtFormat\" );\n\t\t\t\tcldr.main( \"dates/timeZoneNames/gmtZeroFormat\" );\n\t\t\t\tcldr.main( \"dates/timeZoneNames/hourFormat\" );\n\t\t\t\tproperties[ \"timeZoneNames/gmtZeroFormatRe\" ] =\n\t\t\t\t\tnew RegExp( \"^\" + regexpEscape( properties[ \"timeZoneNames/gmtZeroFormat\" ] ) );\n\t\t\t\taux = properties[ \"timeZoneNames/hourFormat\" ];\n\t\t\t\tproperties[ \"timeZoneNames/hourFormat\" ] = (\n\t\t\t\t\tlength < 4 ?\n\t\t\t\t\t\t[ dateTimezoneHourFormatHm( aux, \"H\" ), dateTimezoneHourFormatH( aux ) ] :\n\t\t\t\t\t\t[ dateTimezoneHourFormatHm( aux, \"HH\" ) ]\n\t\t\t\t).map(function( hourFormat ) {\n\t\t\t\t\treturn hourFormatRe(\n\t\t\t\t\t\thourFormat,\n\t\t\t\t\t\tgmtFormat,\n\t\t\t\t\t\tdigitsReSource,\n\t\t\t\t\t\ttimeSeparator\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t/* falls through */\n\t\t\tcase \"X\":\n\t\t\tcase \"x\":\n\n\t\t\t\t// x: hourFormat(\"+HH[mm];-HH[mm]\")\n\t\t\t\t// xx: hourFormat(\"+HHmm;-HHmm\")\n\t\t\t\t// xxx: hourFormat(\"+HH:mm;-HH:mm\")\n\t\t\t\t// xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n\t\t\t\t// xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n\t\t\t\tproperties.x = [\n\t\t\t\t\t[ \"+HHmm;-HHmm\", \"+HH;-HH\" ],\n\t\t\t\t\t[ \"+HHmm;-HHmm\" ],\n\t\t\t\t\t[ \"+HH:mm;-HH:mm\" ],\n\t\t\t\t\t[ \"+HHmmss;-HHmmss\", \"+HHmm;-HHmm\" ],\n\t\t\t\t\t[ \"+HH:mm:ss;-HH:mm:ss\", \"+HH:mm;-HH:mm\" ]\n\t\t\t\t][ length - 1 ].map(function( hourFormat ) {\n\t\t\t\t\treturn hourFormatRe( hourFormat );\n\t\t\t\t});\n\t\t}\n\t});\n\n\tcldr.off( \"get\", populateProperties );\n\n\treturn properties;\n};\n\n\n\n\n/**\n * dayOfWeek( date, firstDay )\n *\n * @date\n *\n * @firstDay the result of `dateFirstDayOfWeek( cldr )`\n *\n * Return the day of the week normalized by the territory's firstDay [0-6].\n * Eg for \"mon\":\n * - return 0 if territory is GB, or BR, or DE, or FR (week starts on \"mon\");\n * - return 1 if territory is US (week starts on \"sun\");\n * - return 2 if territory is EG (week starts on \"sat\");\n */\nvar dateDayOfWeek = function( date, firstDay ) {\n\treturn ( date.getDay() - firstDay + 7 ) % 7;\n};\n\n\n\n\n/**\n * distanceInDays( from, to )\n *\n * Return the distance in days between from and to Dates.\n */\nvar dateDistanceInDays = function( from, to ) {\n\tvar inDays = 864e5;\n\treturn ( to.getTime() - from.getTime() ) / inDays;\n};\n\n\n\n\n/**\n * dayOfYear\n *\n * Return the distance in days of the date to the begin of the year [0-d].\n */\nvar dateDayOfYear = function( date ) {\n\treturn Math.floor( dateDistanceInDays( dateStartOf( date, \"year\" ), date ) );\n};\n\n\n\n\n// Invert key and values, e.g., {\"year\": \"yY\"} ==> {\"y\": \"year\", \"Y\": \"year\"}\nvar dateFieldsMap = objectInvert({\n\t\"era\": \"G\",\n\t\"year\": \"yY\",\n\t\"quarter\": \"qQ\",\n\t\"month\": \"ML\",\n\t\"week\": \"wW\",\n\t\"day\": \"dDF\",\n\t\"weekday\": \"ecE\",\n\t\"dayperiod\": \"a\",\n\t\"hour\": \"hHkK\",\n\t\"minute\": \"m\",\n\t\"second\": \"sSA\",\n\t\"zone\": \"zvVOxX\"\n}, function( object, key, value ) {\n\tvalue.split( \"\" ).forEach(function( symbol ) {\n\t\tobject[ symbol ] = key;\n\t});\n\treturn object;\n});\n\n\n\n\n/**\n * millisecondsInDay\n */\nvar dateMillisecondsInDay = function( date ) {\n\n\t// TODO Handle daylight savings discontinuities\n\treturn date - dateStartOf( date, \"day\" );\n};\n\n\n\n\n/**\n * hourFormat( date, format, timeSeparator, formatNumber )\n *\n * Return date's timezone offset according to the format passed.\n * Eg for format when timezone offset is 180:\n * - \"+H;-H\": -3\n * - \"+HHmm;-HHmm\": -0300\n * - \"+HH:mm;-HH:mm\": -03:00\n * - \"+HH:mm:ss;-HH:mm:ss\": -03:00:00\n */\nvar dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber ) {\n\tvar absOffset,\n\t\toffset = date.getTimezoneOffset();\n\n\tabsOffset = Math.abs( offset );\n\tformatNumber = formatNumber || {\n\t\t1: function( value ) {\n\t\t\treturn stringPad( value, 1 );\n\t\t},\n\t\t2: function( value ) {\n\t\t\treturn stringPad( value, 2 );\n\t\t}\n\t};\n\n\treturn format\n\n\t\t// Pick the correct sign side (+ or -).\n\t\t.split( \";\" )[ offset > 0 ? 1 : 0 ]\n\n\t\t// Localize time separator\n\t\t.replace( \":\", timeSeparator )\n\n\t\t// Update hours offset.\n\t\t.replace( /HH?/, function( match ) {\n\t\t\treturn formatNumber[ match.length ]( Math.floor( absOffset / 60 ) );\n\t\t})\n\n\t\t// Update minutes offset and return.\n\t\t.replace( /mm/, function() {\n\t\t\treturn formatNumber[ 2 ]( Math.floor( absOffset % 60 ) );\n\t\t})\n\n\t\t// Update minutes offset and return.\n\t\t.replace( /ss/, function() {\n\t\t\treturn formatNumber[ 2 ]( Math.floor( absOffset % 1 * 60 ) );\n\t\t});\n};\n\n\n\n\n/**\n * format( date, properties )\n *\n * @date [Date instance].\n *\n * @properties\n *\n * TODO Support other calendar types.\n *\n * Disclosure: this function borrows excerpts of dojo/date/locale.\n */\nvar dateFormat = function( date, numberFormatters, properties ) {\n\tvar parts = [];\n\n\tvar timeSeparator = properties.timeSeparator;\n\n\t// create globalize date with given timezone data\n\tif ( properties.timeZoneData ) {\n\t\tdate = new ZonedDateTime( date, properties.timeZoneData() );\n\t}\n\n\tproperties.pattern.replace( datePatternRe, function( current ) {\n\t\tvar aux, dateField, type, value,\n\t\t\tchr = current.charAt( 0 ),\n\t\t\tlength = current.length;\n\n\t\tif ( chr === \"j\" ) {\n\n\t\t\t// Locale preferred hHKk.\n\t\t\t// http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data\n\t\t\tchr = properties.preferredTime;\n\t\t}\n\n\t\tif ( chr === \"Z\" ) {\n\n\t\t\t// Z..ZZZ: same as \"xxxx\".\n\t\t\tif ( length < 4 ) {\n\t\t\t\tchr = \"x\";\n\t\t\t\tlength = 4;\n\n\t\t\t// ZZZZ: same as \"OOOO\".\n\t\t\t} else if ( length < 5 ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tlength = 4;\n\n\t\t\t// ZZZZZ: same as \"XXXXX\"\n\t\t\t} else {\n\t\t\t\tchr = \"X\";\n\t\t\t\tlength = 5;\n\t\t\t}\n\t\t}\n\n\t\t// z...zzz: \"{shortRegion}\", e.g., \"PST\" or \"PDT\".\n\t\t// zzzz: \"{regionName} {Standard Time}\" or \"{regionName} {Daylight Time}\",\n\t\t// e.g., \"Pacific Standard Time\" or \"Pacific Daylight Time\".\n\t\tif ( chr === \"z\" ) {\n\t\t\tif ( date.isDST ) {\n\t\t\t\tvalue = date.isDST() ? properties.daylightTzName : properties.standardTzName;\n\t\t\t}\n\n\t\t\t// Fall back to \"O\" format.\n\t\t\tif ( !value ) {\n\t\t\t\tchr = \"O\";\n\t\t\t\tif ( length < 4 ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tswitch ( chr ) {\n\n\t\t\t// Era\n\t\t\tcase \"G\":\n\t\t\t\tvalue = properties.eras[ date.getFullYear() < 0 ? 0 : 1 ];\n\t\t\t\tbreak;\n\n\t\t\t// Year\n\t\t\tcase \"y\":\n\n\t\t\t\t// Plain year.\n\t\t\t\t// The length specifies the padding, but for two letters it also specifies the\n\t\t\t\t// maximum length.\n\t\t\t\tvalue = date.getFullYear();\n\t\t\t\tif ( length === 2 ) {\n\t\t\t\t\tvalue = String( value );\n\t\t\t\t\tvalue = +value.substr( value.length - 2 );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Y\":\n\n\t\t\t\t// Year in \"Week of Year\"\n\t\t\t\t// The length specifies the padding, but for two letters it also specifies the\n\t\t\t\t// maximum length.\n\t\t\t\t// yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays\n\t\t\t\tvalue = new Date( date.getTime() );\n\t\t\t\tvalue.setDate(\n\t\t\t\t\tvalue.getDate() + 7 -\n\t\t\t\t\tdateDayOfWeek( date, properties.firstDay ) -\n\t\t\t\t\tproperties.firstDay -\n\t\t\t\t\tproperties.minDays\n\t\t\t\t);\n\t\t\t\tvalue = value.getFullYear();\n\t\t\t\tif ( length === 2 ) {\n\t\t\t\t\tvalue = String( value );\n\t\t\t\t\tvalue = +value.substr( value.length - 2 );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Quarter\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\":\n\t\t\t\tvalue = Math.ceil( ( date.getMonth() + 1 ) / 3 );\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tvalue = properties.quarters[ chr ][ length ][ value ];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Month\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tvalue = date.getMonth() + 1;\n\t\t\t\tif ( length > 2 ) {\n\t\t\t\t\tvalue = properties.months[ chr ][ length ][ value ];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Week\n\t\t\tcase \"w\":\n\n\t\t\t\t// Week of Year.\n\t\t\t\t// woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0.\n\t\t\t\t// TODO should pad on ww? Not documented, but I guess so.\n\t\t\t\tvalue = dateDayOfWeek( dateStartOf( date, \"year\" ), properties.firstDay );\n\t\t\t\tvalue = Math.ceil( ( dateDayOfYear( date ) + value ) / 7 ) -\n\t\t\t\t\t( 7 - value >= properties.minDays ? 0 : 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase \"W\":\n\n\t\t\t\t// Week of Month.\n\t\t\t\t// wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0.\n\t\t\t\tvalue = dateDayOfWeek( dateStartOf( date, \"month\" ), properties.firstDay );\n\t\t\t\tvalue = Math.ceil( ( date.getDate() + value ) / 7 ) -\n\t\t\t\t\t( 7 - value >= properties.minDays ? 0 : 1 );\n\t\t\t\tbreak;\n\n\t\t\t// Day\n\t\t\tcase \"d\":\n\t\t\t\tvalue = date.getDate();\n\t\t\t\tbreak;\n\n\t\t\tcase \"D\":\n\t\t\t\tvalue = dateDayOfYear( date ) + 1;\n\t\t\t\tbreak;\n\n\t\t\tcase \"F\":\n\n\t\t\t\t// Day of Week in month. eg. 2nd Wed in July.\n\t\t\t\tvalue = Math.floor( date.getDate() / 7 ) + 1;\n\t\t\t\tbreak;\n\n\t\t\t// Week day\n\t\t\tcase \"e\":\n\t\t\tcase \"c\":\n\t\t\t\tif ( length <= 2 ) {\n\n\t\t\t\t\t// Range is [1-7] (deduced by example provided on documentation)\n\t\t\t\t\t// TODO Should pad with zeros (not specified in the docs)?\n\t\t\t\t\tvalue = dateDayOfWeek( date, properties.firstDay ) + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"E\":\n\t\t\t\tvalue = dateWeekDays[ date.getDay() ];\n\t\t\t\tvalue = properties.days[ chr ][ length ][ value ];\n\t\t\t\tbreak;\n\n\t\t\t// Period (AM or PM)\n\t\t\tcase \"a\":\n\t\t\t\tvalue = properties.dayPeriods[ date.getHours() < 12 ? \"am\" : \"pm\" ];\n\t\t\t\tbreak;\n\n\t\t\t// Hour\n\t\t\tcase \"h\": // 1-12\n\t\t\t\tvalue = ( date.getHours() % 12 ) || 12;\n\t\t\t\tbreak;\n\n\t\t\tcase \"H\": // 0-23\n\t\t\t\tvalue = date.getHours();\n\t\t\t\tbreak;\n\n\t\t\tcase \"K\": // 0-11\n\t\t\t\tvalue = date.getHours() % 12;\n\t\t\t\tbreak;\n\n\t\t\tcase \"k\": // 1-24\n\t\t\t\tvalue = date.getHours() || 24;\n\t\t\t\tbreak;\n\n\t\t\t// Minute\n\t\t\tcase \"m\":\n\t\t\t\tvalue = date.getMinutes();\n\t\t\t\tbreak;\n\n\t\t\t// Second\n\t\t\tcase \"s\":\n\t\t\t\tvalue = date.getSeconds();\n\t\t\t\tbreak;\n\n\t\t\tcase \"S\":\n\t\t\t\tvalue = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) );\n\t\t\t\tbreak;\n\n\t\t\tcase \"A\":\n\t\t\t\tvalue = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) );\n\t\t\t\tbreak;\n\n\t\t\t// Zone\n\t\t\tcase \"z\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"v\":\n\n\t\t\t\t// v...vvv: \"{shortRegion}\", eg. \"PT\".\n\t\t\t\t// vvvv: \"{regionName} {Time}\",\n\t\t\t\t// e.g., \"Pacific Time\".\n\t\t\t\tif ( properties.genericTzName ) {\n\t\t\t\t\tvalue = properties.genericTzName;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"V\":\n\n\t\t\t\t//VVVV: \"{explarCity} {Time}\", e.g., \"Los Angeles Time\"\n\t\t\t\tif ( properties.timeZoneName ) {\n\t\t\t\t\tvalue = properties.timeZoneName;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( current === \"v\" ) {\n\t\t\t\t\tlength = 1;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"O\":\n\n\t\t\t\t// O: \"{gmtFormat}+H;{gmtFormat}-H\" or \"{gmtZeroFormat}\", eg. \"GMT-8\" or \"GMT\".\n\t\t\t\t// OOOO: \"{gmtFormat}{hourFormat}\" or \"{gmtZeroFormat}\", eg. \"GMT-08:00\" or \"GMT\".\n\t\t\t\tif ( date.getTimezoneOffset() === 0 ) {\n\t\t\t\t\tvalue = properties.gmtZeroFormat;\n\t\t\t\t} else {\n\n\t\t\t\t\t// If O..OOO and timezone offset has non-zero minutes, show minutes.\n\t\t\t\t\tif ( length < 4 ) {\n\t\t\t\t\t\taux = date.getTimezoneOffset();\n\t\t\t\t\t\taux = properties.hourFormat[ aux % 60 - aux % 1 === 0 ? 0 : 1 ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\taux = properties.hourFormat;\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = dateTimezoneHourFormat(\n\t\t\t\t\t\tdate,\n\t\t\t\t\t\taux,\n\t\t\t\t\t\ttimeSeparator,\n\t\t\t\t\t\tnumberFormatters\n\t\t\t\t\t);\n\t\t\t\t\tvalue = properties.gmtFormat.replace( /\\{0\\}/, value );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"X\":\n\n\t\t\t\t// Same as x*, except it uses \"Z\" for zero offset.\n\t\t\t\tif ( date.getTimezoneOffset() === 0 ) {\n\t\t\t\t\tvalue = \"Z\";\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t/* falls through */\n\t\t\tcase \"x\":\n\n\t\t\t\t// x: hourFormat(\"+HH[mm];-HH[mm]\")\n\t\t\t\t// xx: hourFormat(\"+HHmm;-HHmm\")\n\t\t\t\t// xxx: hourFormat(\"+HH:mm;-HH:mm\")\n\t\t\t\t// xxxx: hourFormat(\"+HHmm[ss];-HHmm[ss]\")\n\t\t\t\t// xxxxx: hourFormat(\"+HH:mm[:ss];-HH:mm[:ss]\")\n\t\t\t\taux = date.getTimezoneOffset();\n\n\t\t\t\t// If x and timezone offset has non-zero minutes, use xx (i.e., show minutes).\n\t\t\t\tif ( length === 1 && aux % 60 - aux % 1 !== 0 ) {\n\t\t\t\t\tlength += 1;\n\t\t\t\t}\n\n\t\t\t\t// If (xxxx or xxxxx) and timezone offset has zero seconds, use xx or xxx\n\t\t\t\t// respectively (i.e., don't show optional seconds).\n\t\t\t\tif ( ( length === 4 || length === 5 ) && aux % 1 === 0 ) {\n\t\t\t\t\tlength -= 2;\n\t\t\t\t}\n\n\t\t\t\tvalue = [\n\t\t\t\t\t\"+HH;-HH\",\n\t\t\t\t\t\"+HHmm;-HHmm\",\n\t\t\t\t\t\"+HH:mm;-HH:mm\",\n\t\t\t\t\t\"+HHmmss;-HHmmss\",\n\t\t\t\t\t\"+HH:mm:ss;-HH:mm:ss\"\n\t\t\t\t][ length - 1 ];\n\n\t\t\t\tvalue = dateTimezoneHourFormat( date, value, \":\" );\n\t\t\t\tbreak;\n\n\t\t\t// timeSeparator\n\t\t\tcase \":\":\n\t\t\t\tvalue = timeSeparator;\n\t\t\t\tbreak;\n\n\t\t\t// ' literals.\n\t\t\tcase \"'\":\n\t\t\t\tvalue = removeLiteralQuotes( current );\n\t\t\t\tbreak;\n\n\t\t\t// Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and\n\t\t\t// arabic characters.\n\t\t\tdefault:\n\t\t\t\tvalue = current;\n\n\t\t}\n\t\tif ( typeof value === \"number\" ) {\n\t\t\tvalue = numberFormatters[ length ]( value );\n\t\t}\n\n\t\tdateField = dateFieldsMap[ chr ];\n\t\ttype = dateField ? dateField : \"literal\";\n\n\t\tpartsPush( parts, type, value );\n\t});\n\n\treturn parts;\n\n};\n\n\n\n\nvar dateToPartsFormatterFn = function( numberFormatters, properties ) {\n\treturn function dateToPartsFormatter( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeDate( value, \"value\" );\n\n\t\treturn dateFormat( value, numberFormatters, properties );\n\t};\n\n};\n\n\n\n\nfunction optionsHasStyle( options ) {\n\treturn options.skeleton !== undefined ||\n\t\toptions.date !== undefined ||\n\t\toptions.time !== undefined ||\n\t\toptions.datetime !== undefined ||\n\t\toptions.raw !== undefined;\n}\n\nfunction validateRequiredCldr( path, value ) {\n\tvalidateCldr( path, value, {\n\t\tskip: [\n\t\t\t/dates\\/calendars\\/gregorian\\/dateTimeFormats\\/availableFormats/,\n\t\t\t/dates\\/calendars\\/gregorian\\/days\\/.*\\/short/,\n\t\t\t/dates\\/timeZoneNames\\/zone/,\n\t\t\t/dates\\/timeZoneNames\\/metazone/,\n\t\t\t/globalize-iana/,\n\t\t\t/supplemental\\/metaZones/,\n\t\t\t/supplemental\\/timeData\\/(?!001)/,\n\t\t\t/supplemental\\/weekData\\/(?!001)/\n\t\t]\n\t});\n}\n\nfunction validateOptionsPreset( options ) {\n\tvalidateOptionsPresetEach( \"date\", options );\n\tvalidateOptionsPresetEach( \"time\", options );\n\tvalidateOptionsPresetEach( \"datetime\", options );\n}\n\nfunction validateOptionsPresetEach( type, options ) {\n\tvar value = options[ type ];\n\tvalidate(\n\t\t\"E_INVALID_OPTIONS\",\n\t\t\"Invalid `{{type}: \\\"{value}\\\"}`.\",\n\t\tvalue === undefined || [ \"short\", \"medium\", \"long\", \"full\" ].indexOf( value ) !== -1,\n\t\t{ type: type, value: value }\n\t);\n}\n\nfunction validateOptionsSkeleton( pattern, skeleton ) {\n\tvalidate(\n\t\t\"E_INVALID_OPTIONS\",\n\t\t\"Invalid `{skeleton: \\\"{value}\\\"}` based on provided CLDR.\",\n\t\tskeleton === undefined || ( typeof pattern === \"string\" && pattern ),\n\t\t{ type: \"skeleton\", value: skeleton }\n\t);\n}\n\nfunction validateRequiredIana( timeZone ) {\n\treturn function( path, value ) {\n\n\t\tif ( !/globalize-iana/.test( path ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvalidate(\n\t\t\t\"E_MISSING_IANA_TZ\",\n\t\t\t\"Missing required IANA timezone content for `{timeZone}`: `{path}`.\",\n\t\t\tvalue,\n\t\t\t{\n\t\t\t\tpath: path.replace( /globalize-iana\\//, \"\" ),\n\t\t\t\ttimeZone: timeZone\n\t\t\t}\n\t\t);\n\t};\n}\n\n/**\n * .loadTimeZone( json )\n *\n * @json [JSON]\n *\n * Load IANA timezone data.\n */\nGlobalize.loadTimeZone = function( json ) {\n\tvar customData = {\n\t\t\t\"globalize-iana\": json\n\t\t};\n\n\tvalidateParameterPresence( json, \"json\" );\n\tvalidateParameterTypePlainObject( json, \"json\" );\n\n\tCldr.load( customData );\n};\n\n/**\n * .dateFormatter( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a date formatter function (of the form below) according to the given options and the\n * default/instance locale.\n *\n * fn( value )\n *\n * @value [Date]\n *\n * Return a function that formats a date according to the given `format` and the default/instance\n * locale.\n */\nGlobalize.dateFormatter =\nGlobalize.prototype.dateFormatter = function( options ) {\n\tvar args, dateToPartsFormatter, returnFn;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\tif ( !optionsHasStyle( options ) ) {\n\t\toptions.skeleton = \"yMd\";\n\t}\n\targs = [ options ];\n\n\tdateToPartsFormatter = this.dateToPartsFormatter( options );\n\treturnFn = dateFormatterFn( dateToPartsFormatter );\n\truntimeBind( args, this.cldr, returnFn, [ dateToPartsFormatter ] );\n\n\treturn returnFn;\n};\n\n/**\n * .dateToPartsFormatter( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a date formatter function (of the form below) according to the given options and the\n * default/instance locale.\n *\n * fn( value )\n *\n * @value [Date]\n *\n * Return a function that formats a date to parts according to the given `format`\n * and the default/instance\n * locale.\n */\nGlobalize.dateToPartsFormatter =\nGlobalize.prototype.dateToPartsFormatter = function( options ) {\n\tvar args, cldr, numberFormatters, pad, pattern, properties, returnFn,\n\t\ttimeZone, ianaListener;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\tcldr = this.cldr;\n\toptions = options || {};\n\tif ( !optionsHasStyle( options ) ) {\n\t\toptions.skeleton = \"yMd\";\n\t}\n\n\tvalidateOptionsPreset( options );\n\tvalidateDefaultLocale( cldr );\n\n\ttimeZone = options.timeZone;\n\tvalidateParameterTypeString( timeZone, \"options.timeZone\" );\n\n\targs = [ options ];\n\n\tcldr.on( \"get\", validateRequiredCldr );\n\tif ( timeZone ) {\n\t\tianaListener = validateRequiredIana( timeZone );\n\t\tcldr.on( \"get\", ianaListener );\n\t}\n\ttry {\n\t\tpattern = dateExpandPattern( options, cldr );\n\t\tvalidateOptionsSkeleton( pattern, options.skeleton );\n\t\tproperties = dateFormatProperties( pattern, cldr, timeZone );\n\t} finally {\n\t\tcldr.off( \"get\", validateRequiredCldr );\n\t\tif ( ianaListener ) {\n\t\t\tcldr.off( \"get\", ianaListener );\n\t\t}\n\t}\n\n\t// Create needed number formatters.\n\tnumberFormatters = properties.numberFormatters;\n\tdelete properties.numberFormatters;\n\tfor ( pad in numberFormatters ) {\n\t\tnumberFormatters[ pad ] = this.numberFormatter({\n\t\t\traw: numberFormatters[ pad ]\n\t\t});\n\t}\n\n\treturnFn = dateToPartsFormatterFn( numberFormatters, properties );\n\n\truntimeBind( args, cldr, returnFn, [ numberFormatters, properties ] );\n\n\treturn returnFn;\n};\n\n/**\n * .dateParser( options )\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a function that parses a string date according to the given `formats` and the\n * default/instance locale.\n */\nGlobalize.dateParser =\nGlobalize.prototype.dateParser = function( options ) {\n\tvar args, cldr, numberParser, parseProperties, pattern, returnFn, timeZone,\n\t\ttokenizerProperties;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\tcldr = this.cldr;\n\toptions = options || {};\n\tif ( !optionsHasStyle( options ) ) {\n\t\toptions.skeleton = \"yMd\";\n\t}\n\n\tvalidateOptionsPreset( options );\n\tvalidateDefaultLocale( cldr );\n\n\ttimeZone = options.timeZone;\n\tvalidateParameterTypeString( timeZone, \"options.timeZone\" );\n\n\targs = [ options ];\n\n\ttry {\n\t\tcldr.on( \"get\", validateRequiredCldr );\n\t\tif ( timeZone ) {\n\t\t\tcldr.on( \"get\", validateRequiredIana( timeZone ) );\n\t\t}\n\t\tpattern = dateExpandPattern( options, cldr );\n\t\tvalidateOptionsSkeleton( pattern, options.skeleton );\n\t\ttokenizerProperties = dateTokenizerProperties( pattern, cldr, timeZone );\n\t\tparseProperties = dateParseProperties( cldr, timeZone );\n\t} finally {\n\t\tcldr.off( \"get\", validateRequiredCldr );\n\t\tif ( timeZone ) {\n\t\t\tcldr.off( \"get\", validateRequiredIana( timeZone ) );\n\t\t}\n\t}\n\tnumberParser = this.numberParser({ raw: \"0\" });\n\n\treturnFn = dateParserFn( numberParser, parseProperties, tokenizerProperties );\n\n\truntimeBind( args, cldr, returnFn, [ numberParser, parseProperties, tokenizerProperties ] );\n\n\treturn returnFn;\n};\n\n/**\n * .formatDate( value, options )\n *\n * @value [Date]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Formats a date or number according to the given options string and the default/instance locale.\n */\nGlobalize.formatDate =\nGlobalize.prototype.formatDate = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeDate( value, \"value\" );\n\n\treturn this.dateFormatter( options )( value );\n};\n\n/**\n * .formatDateToParts( value, options )\n *\n * @value [Date]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Formats a date or number to parts according to the given options and the default/instance locale.\n */\nGlobalize.formatDateToParts =\nGlobalize.prototype.formatDateToParts = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeDate( value, \"value\" );\n\n\treturn this.dateToPartsFormatter( options )( value );\n};\n\n/**\n * .parseDate( value, options )\n *\n * @value [String]\n *\n * @options [Object] see date/expand_pattern for more info.\n *\n * Return a Date instance or null.\n */\nGlobalize.parseDate =\nGlobalize.prototype.parseDate = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeString( value, \"value\" );\n\n\treturn this.dateParser( options )( value );\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"cldr/event\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Extend global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar alwaysArray = Globalize._alwaysArray,\n\tcreateError = Globalize._createError,\n\tisPlainObject = Globalize._isPlainObject,\n\truntimeBind = Globalize._runtimeBind,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidate = Globalize._validate,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject;\nvar MessageFormat;\n/* eslint-disable */\nMessageFormat = (function() {\nMessageFormat._parse = (function() {\n\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = function(st) {\n return { type: 'messageFormatPattern', statements: st };\n },\n peg$c2 = peg$FAILED,\n peg$c3 = \"{\",\n peg$c4 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c5 = null,\n peg$c6 = \",\",\n peg$c7 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c8 = \"}\",\n peg$c9 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c10 = function(argIdx, efmt) {\n var res = {\n type: \"messageFormatElement\",\n argumentIndex: argIdx\n };\n if (efmt && efmt.length) {\n res.elementFormat = efmt[1];\n } else {\n res.output = true;\n }\n return res;\n },\n peg$c11 = \"plural\",\n peg$c12 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n peg$c13 = function(t, s) {\n return { type: \"elementFormat\", key: t, val: s };\n },\n peg$c14 = \"selectordinal\",\n peg$c15 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n peg$c16 = \"select\",\n peg$c17 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n peg$c18 = function(t, p) {\n return { type: \"elementFormat\", key: t, val: p };\n },\n peg$c19 = function(op, pf) {\n return { type: \"pluralFormatPattern\", pluralForms: pf, offset: op || 0 };\n },\n peg$c20 = \"offset\",\n peg$c21 = { type: \"literal\", value: \"offset\", description: \"\\\"offset\\\"\" },\n peg$c22 = \":\",\n peg$c23 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c24 = function(d) { return d; },\n peg$c25 = function(k, mfp) {\n return { key: k, val: mfp };\n },\n peg$c26 = function(i) { return i; },\n peg$c27 = \"=\",\n peg$c28 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c29 = function(pf) { return { type: \"selectFormatPattern\", pluralForms: pf }; },\n peg$c30 = function(p) { return p; },\n peg$c31 = \"#\",\n peg$c32 = { type: \"literal\", value: \"#\", description: \"\\\"#\\\"\" },\n peg$c33 = function() { return {type: 'octothorpe'}; },\n peg$c34 = function(s) { return { type: \"string\", val: s.join('') }; },\n peg$c35 = { type: \"other\", description: \"identifier\" },\n peg$c36 = /^[0-9a-zA-Z$_]/,\n peg$c37 = { type: \"class\", value: \"[0-9a-zA-Z$_]\", description: \"[0-9a-zA-Z$_]\" },\n peg$c38 = /^[^ \\t\\n\\r,.+={}]/,\n peg$c39 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}]\" },\n peg$c40 = function(s) { return s; },\n peg$c41 = function(chars) { return chars.join(''); },\n peg$c42 = /^[^{}#\\\\\\0-\\x1F \\t\\n\\r]/,\n peg$c43 = { type: \"class\", value: \"[^{}#\\\\\\\\\\\\0-\\\\x1F \\\\t\\\\n\\\\r]\", description: \"[^{}#\\\\\\\\\\\\0-\\\\x1F \\\\t\\\\n\\\\r]\" },\n peg$c44 = function(x) { return x; },\n peg$c45 = \"\\\\\\\\\",\n peg$c46 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c47 = function() { return \"\\\\\"; },\n peg$c48 = \"\\\\#\",\n peg$c49 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n peg$c50 = function() { return \"#\"; },\n peg$c51 = \"\\\\{\",\n peg$c52 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n peg$c53 = function() { return \"\\u007B\"; },\n peg$c54 = \"\\\\}\",\n peg$c55 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n peg$c56 = function() { return \"\\u007D\"; },\n peg$c57 = \"\\\\u\",\n peg$c58 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n peg$c59 = function(h1, h2, h3, h4) {\n return String.fromCharCode(parseInt(\"0x\" + h1 + h2 + h3 + h4));\n },\n peg$c60 = /^[0-9]/,\n peg$c61 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c62 = function(ds) {\n //the number might start with 0 but must not be interpreted as an octal number\n //Hence, the base is passed to parseInt explicitely\n return parseInt((ds.join('')), 10);\n },\n peg$c63 = /^[0-9a-fA-F]/,\n peg$c64 = { type: \"class\", value: \"[0-9a-fA-F]\", description: \"[0-9a-fA-F]\" },\n peg$c65 = { type: \"other\", description: \"whitespace\" },\n peg$c66 = function(w) { return w.join(''); },\n peg$c67 = /^[ \\t\\n\\r]/,\n peg$c68 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemessageFormatPattern();\n\n return s0;\n }\n\n function peg$parsemessageFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsemessageFormatElement();\n if (s2 === peg$FAILED) {\n s2 = peg$parsestring();\n if (s2 === peg$FAILED) {\n s2 = peg$parseoctothorpe();\n }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsemessageFormatElement();\n if (s2 === peg$FAILED) {\n s2 = peg$parsestring();\n if (s2 === peg$FAILED) {\n s2 = peg$parseoctothorpe();\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsemessageFormatElement() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c3;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseid();\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c6;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseelementFormat();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c2;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c2;\n }\n if (s4 === peg$FAILED) {\n s4 = peg$c5;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s6 = peg$c8;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s6 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c10(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseelementFormat() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c11) {\n s2 = peg$c11;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepluralFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 13) === peg$c14) {\n s2 = peg$c14;\n peg$currPos += 13;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepluralFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c16) {\n s2 = peg$c16;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c6;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseselectFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseid();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseargStylePattern();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseargStylePattern();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c18(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsepluralFormatPattern() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseoffsetPattern();\n if (s1 === peg$FAILED) {\n s1 = peg$c5;\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsepluralForm();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsepluralForm();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c19(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseoffsetPattern() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c20) {\n s2 = peg$c20;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c22;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsedigits();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsepluralForm() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepluralKey();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c3;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c8;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s8 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c25(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsepluralKey() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseid();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c27;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedigits();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n return s0;\n }\n\n function peg$parseselectFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseselectForm();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseselectForm();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c29(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseselectForm() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseid();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c3;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c8;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s8 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c25(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseargStylePattern() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s2 = peg$c6;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseid();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseoctothorpe() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c31;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsestring() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechars();\n if (s2 === peg$FAILED) {\n s2 = peg$parsewhitespace();\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechars();\n if (s2 === peg$FAILED) {\n s2 = peg$parsewhitespace();\n }\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c34(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseid() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n s3 = input.substring(s2, peg$currPos);\n }\n s2 = s3;\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c40(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n\n return s0;\n }\n\n function peg$parsechars() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c41(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (peg$c42.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c45) {\n s1 = peg$c45;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c47();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c48) {\n s1 = peg$c48;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c50();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c51) {\n s1 = peg$c51;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c53();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c54) {\n s1 = peg$c54;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c56();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c57) {\n s1 = peg$c57;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsehexDigit();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsehexDigit();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsehexDigit();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsehexDigit();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c59(s2, s3, s4, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsedigits() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c60.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c60.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c62(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsehexDigit() {\n var s0;\n\n if (peg$c63.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c64); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewhitespace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewhitespace();\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c66(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n\n return s0;\n }\n\n function peg$parsewhitespace() {\n var s0;\n\n if (peg$c67.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c68); }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n}()).parse;\n\n\n/** @file messageformat.js - ICU PluralFormat + SelectFormat for JavaScript\n * @author Alex Sexton - @SlexAxton\n * @version 0.3.0-1\n * @copyright 2012-2015 Alex Sexton, Eemeli Aro, and Contributors\n * @license To use or fork, MIT. To contribute back, Dojo CLA */\n\n\n/** Utility function for quoting an Object's key value iff required\n * @private */\nfunction propname(key, obj) {\n if (/^[A-Z_$][0-9A-Z_$]*$/i.test(key)) {\n return obj ? obj + '.' + key : key;\n } else {\n var jkey = JSON.stringify(key);\n return obj ? obj + '[' + jkey + ']' : jkey;\n }\n};\n\n\n/** Create a new message formatter\n *\n * @class\n * @global\n * @param {string|string[]} [locale=\"en\"] - The locale to use, with fallbacks\n * @param {function} [pluralFunc] - Optional custom pluralization function\n * @param {function[]} [formatters] - Optional custom formatting functions */\nfunction MessageFormat(locale, pluralFunc, formatters) {\n this.lc = [locale]; \n this.runtime.pluralFuncs = {};\n this.runtime.pluralFuncs[this.lc[0]] = pluralFunc;\n this.runtime.fmt = {};\n if (formatters) for (var f in formatters) {\n this.runtime.fmt[f] = formatters[f];\n }\n}\n\n\n\n\n/** Parse an input string to its AST\n *\n * Precompiled from `lib/messageformat-parser.pegjs` by\n * {@link http://pegjs.org/ PEG.js}. Included in MessageFormat object\n * to enable testing.\n *\n * @private */\n\n\n\n/** Pluralization functions from\n * {@link http://github.com/eemeli/make-plural.js make-plural}\n *\n * @memberof MessageFormat\n * @type Object. */\nMessageFormat.plurals = {};\n\n\n/** Default number formatting functions in the style of ICU's\n * {@link http://icu-project.org/apiref/icu4j/com/ibm/icu/text/MessageFormat.html simpleArg syntax}\n * implemented using the\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl Intl}\n * object defined by ECMA-402.\n *\n * **Note**: Intl is not defined in default Node until 0.11.15 / 0.12.0, so\n * earlier versions require a {@link https://www.npmjs.com/package/intl polyfill}.\n * Therefore {@link MessageFormat.withIntlSupport} needs to be true for these\n * functions to be available for inclusion in the output.\n *\n * @see MessageFormat#setIntlSupport\n *\n * @namespace\n * @memberof MessageFormat\n * @property {function} number - Represent a number as an integer, percent or currency value\n * @property {function} date - Represent a date as a full/long/default/short string\n * @property {function} time - Represent a time as a full/long/default/short string\n *\n * @example\n * > var MessageFormat = require('messageformat');\n * > var mf = (new MessageFormat('en')).setIntlSupport(true);\n * > mf.currency = 'EUR';\n * > var mfunc = mf.compile(\"The total is {V,number,currency}.\");\n * > mfunc({V:5.5})\n * \"The total is €5.50.\"\n *\n * @example\n * > var MessageFormat = require('messageformat');\n * > var mf = new MessageFormat('en', null, {number: MessageFormat.number});\n * > mf.currency = 'EUR';\n * > var mfunc = mf.compile(\"The total is {V,number,currency}.\");\n * > mfunc({V:5.5})\n * \"The total is €5.50.\" */\nMessageFormat.formatters = {};\n\n/** Enable or disable support for the default formatters, which require the\n * `Intl` object. Note that this can't be autodetected, as the environment\n * in which the formatted text is compiled into Javascript functions is not\n * necessarily the same environment in which they will get executed.\n *\n * @see MessageFormat.formatters\n *\n * @memberof MessageFormat\n * @param {boolean} [enable=true]\n * @returns {Object} The MessageFormat instance, to allow for chaining\n * @example\n * > var Intl = require('intl');\n * > var MessageFormat = require('messageformat');\n * > var mf = (new MessageFormat('en')).setIntlSupport(true);\n * > mf.currency = 'EUR';\n * > mf.compile(\"The total is {V,number,currency}.\")({V:5.5});\n * \"The total is €5.50.\" */\n\n\n\n/** A set of utility functions that are called by the compiled Javascript\n * functions, these are included locally in the output of {@link\n * MessageFormat#compile compile()}.\n *\n * @namespace\n * @memberof MessageFormat */\nMessageFormat.prototype.runtime = {\n\n /** Utility function for `#` in plural rules\n *\n * @param {number} value - The value to operate on\n * @param {number} [offset=0] - An optional offset, set by the surrounding context */\n number: function(value, offset) {\n if (isNaN(value)) throw new Error(\"'\" + value + \"' isn't a number.\");\n return value - (offset || 0);\n },\n\n /** Utility function for `{N, plural|selectordinal, ...}`\n *\n * @param {number} value - The key to use to find a pluralization rule\n * @param {number} offset - An offset to apply to `value`\n * @param {function} lcfunc - A locale function from `pluralFuncs`\n * @param {Object.} data - The object from which results are looked up\n * @param {?boolean} isOrdinal - If true, use ordinal rather than cardinal rules\n * @returns {string} The result of the pluralization */\n plural: function(value, offset, lcfunc, data, isOrdinal) {\n if ({}.hasOwnProperty.call(data, value)) return data[value]();\n if (offset) value -= offset;\n var key = lcfunc(value, isOrdinal);\n if (key in data) return data[key]();\n return data.other();\n },\n\n /** Utility function for `{N, select, ...}`\n *\n * @param {number} value - The key to use to find a selection\n * @param {Object.} data - The object from which results are looked up\n * @returns {string} The result of the select statement */\n select: function(value, data) {\n if ({}.hasOwnProperty.call(data, value)) return data[value]();\n return data.other()\n },\n\n /** Pluralization functions included in compiled output\n * @instance\n * @type Object. */\n pluralFuncs: {},\n\n /** Custom formatting functions called by `{var, fn[, args]*}` syntax\n *\n * For examples, see {@link MessageFormat.formatters}\n *\n * @instance\n * @see MessageFormat.formatters\n * @type Object. */\n fmt: {},\n\n /** Custom stringifier to clean up browser inconsistencies\n * @instance */\n toString: function () {\n var _stringify = function(o, level) {\n if (typeof o != 'object') {\n var funcStr = o.toString().replace(/^(function )\\w*/, '$1');\n var indent = /([ \\t]*)\\S.*$/.exec(funcStr);\n return indent ? funcStr.replace(new RegExp('^' + indent[1], 'mg'), '') : funcStr;\n }\n var s = [];\n for (var i in o) if (i != 'toString') {\n if (level == 0) s.push('var ' + i + ' = ' + _stringify(o[i], level + 1) + ';\\n');\n else s.push(propname(i) + ': ' + _stringify(o[i], level + 1));\n }\n if (level == 0) return s.join('');\n if (s.length == 0) return '{}';\n var indent = ' '; while (--level) indent += ' ';\n return '{\\n' + s.join(',\\n').replace(/^/gm, indent) + '\\n}';\n };\n return _stringify(this, 0);\n }\n};\n\n\n/** Recursively map an AST to its resulting string\n *\n * @memberof MessageFormat\n *\n * @param ast - the Ast node for which the JS code should be generated\n *\n * @private */\nMessageFormat.prototype._precompile = function(ast, data) {\n data = data || { keys: {}, offset: {} };\n var r = [], i, tmp, args = [];\n\n switch ( ast.type ) {\n case 'messageFormatPattern':\n for ( i = 0; i < ast.statements.length; ++i ) {\n r.push(this._precompile( ast.statements[i], data ));\n }\n tmp = r.join(' + ') || '\"\"';\n return data.pf_count ? tmp : 'function(d) { return ' + tmp + '; }';\n\n case 'messageFormatElement':\n data.pf_count = data.pf_count || 0;\n if ( ast.output ) {\n return propname(ast.argumentIndex, 'd');\n }\n else {\n data.keys[data.pf_count] = ast.argumentIndex;\n return this._precompile( ast.elementFormat, data );\n }\n return '';\n\n case 'elementFormat':\n args = [ propname(data.keys[data.pf_count], 'd') ];\n switch (ast.key) {\n case 'select':\n args.push(this._precompile(ast.val, data));\n return 'select(' + args.join(', ') + ')';\n case 'selectordinal':\n args = args.concat([ 0, propname(this.lc[0], 'pluralFuncs'), this._precompile(ast.val, data), 1 ]);\n return 'plural(' + args.join(', ') + ')';\n case 'plural':\n data.offset[data.pf_count || 0] = ast.val.offset || 0;\n args = args.concat([ data.offset[data.pf_count] || 0, propname(this.lc[0], 'pluralFuncs'), this._precompile(ast.val, data) ]);\n return 'plural(' + args.join(', ') + ')';\n default:\n if (this.withIntlSupport && !(ast.key in this.runtime.fmt) && (ast.key in MessageFormat.formatters)) {\n tmp = MessageFormat.formatters[ast.key];\n this.runtime.fmt[ast.key] = (typeof tmp(this) == 'function') ? tmp(this) : tmp;\n }\n args.push(JSON.stringify(this.lc));\n if (ast.val && ast.val.length) args.push(JSON.stringify(ast.val.length == 1 ? ast.val[0] : ast.val));\n return 'fmt.' + ast.key + '(' + args.join(', ') + ')';\n }\n\n case 'pluralFormatPattern':\n case 'selectFormatPattern':\n data.pf_count = data.pf_count || 0;\n if (ast.type == 'selectFormatPattern') data.offset[data.pf_count] = 0;\n var needOther = true;\n for (i = 0; i < ast.pluralForms.length; ++i) {\n var key = ast.pluralForms[i].key;\n if (key === 'other') needOther = false;\n var data_copy = JSON.parse(JSON.stringify(data));\n data_copy.pf_count++;\n r.push(propname(key) + ': function() { return ' + this._precompile(ast.pluralForms[i].val, data_copy) + ';}');\n }\n if (needOther) throw new Error(\"No 'other' form found in \" + ast.type + \" \" + data.pf_count);\n return '{ ' + r.join(', ') + ' }';\n\n case 'string':\n return JSON.stringify(ast.val || \"\");\n\n case 'octothorpe':\n if (!data.pf_count) return '\"#\"';\n args = [ propname(data.keys[data.pf_count-1], 'd') ];\n if (data.offset[data.pf_count-1]) args.push(data.offset[data.pf_count-1]);\n return 'number(' + args.join(', ') + ')';\n\n default:\n throw new Error( 'Bad AST type: ' + ast.type );\n }\n};\n\n/** Compile messages into an executable function with clean string\n * representation.\n *\n * If `messages` is a single string including ICU MessageFormat declarations,\n * `opt` is ignored and the returned function takes a single Object parameter\n * `d` representing each of the input's defined variables. The returned\n * function will be defined in a local scope that includes all the required\n * runtime variables.\n *\n * If `messages` is a map of keys to strings, or a map of namespace keys to\n * such key/string maps, the returned function will fill the specified global\n * with javascript functions matching the structure of the input. In such use,\n * the output of `compile()` is expected to be serialized using `.toString()`,\n * and will include definitions of the runtime functions. If `opt.global` is\n * null, calling the output function will return the object itself.\n *\n * Together, the input parameters should match the following patterns:\n * ```js\n * messages = \"string\" || { key0: \"string0\", key1: \"string1\", ... } || {\n * ns0: { key0: \"string0\", key1: \"string1\", ... },\n * ns1: { key0: \"string0\", key1: \"string1\", ... },\n * ...\n * }\n *\n * opt = null || {\n * locale: null || {\n * ns0: \"lc0\" || [ \"lc0\", ... ],\n * ns1: \"lc1\" || [ \"lc1\", ... ],\n * ...\n * },\n * global: null || \"module.exports\" || \"exports\" || \"i18n\" || ...\n * }\n * ```\n *\n * @memberof MessageFormat\n * @param {string|Object}\n * messages - The input message(s) to be compiled, in ICU MessageFormat\n * @param {Object} [opt={}] - Options controlling output for non-simple intput\n * @param {Object} [opt.locale] - The locales to use for the messages, with a\n * structure matching that of `messages`\n * @param {string} [opt.global=\"\"] - The global variable that the output\n * function should use, or a null string for none. \"exports\" and\n * \"module.exports\" are recognised as special cases.\n * @returns {function} The first match found for the given locale(s)\n *\n * @example\n * > var MessageFormat = require('messageformat'),\n * ... mf = new MessageFormat('en'),\n * ... mfunc0 = mf.compile('A {TYPE} example.');\n * > mfunc0({TYPE:'simple'})\n * 'A simple example.'\n * > mfunc0.toString()\n * 'function (d) { return \"A \" + d.TYPE + \" example.\"; }'\n *\n * @example\n * > var msgSet = { a: 'A {TYPE} example.',\n * ... b: 'This has {COUNT, plural, one{one member} other{# members}}.' },\n * ... mfuncSet = mf.compile(msgSet);\n * > mfuncSet().a({TYPE:'more complex'})\n * 'A more complex example.'\n * > mfuncSet().b({COUNT:2})\n * 'This has 2 members.'\n *\n * > console.log(mfuncSet.toString())\n * function anonymous() {\n * var number = function (value, offset) {\n * if (isNaN(value)) throw new Error(\"'\" + value + \"' isn't a number.\");\n * return value - (offset || 0);\n * };\n * var plural = function (value, offset, lcfunc, data, isOrdinal) {\n * if ({}.hasOwnProperty.call(data, value)) return data[value]();\n * if (offset) value -= offset;\n * var key = lcfunc(value, isOrdinal);\n * if (key in data) return data[key]();\n * return data.other();\n * };\n * var select = function (value, data) {\n * if ({}.hasOwnProperty.call(data, value)) return data[value]();\n * return data.other()\n * };\n * var pluralFuncs = {\n * en: function (n, ord) {\n * var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n,\n * n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n * if (ord) return (n10 == 1 && n100 != 11) ? 'one'\n * : (n10 == 2 && n100 != 12) ? 'two'\n * : (n10 == 3 && n100 != 13) ? 'few'\n * : 'other';\n * return (n == 1 && v0) ? 'one' : 'other';\n * }\n * };\n * var fmt = {};\n *\n * return {\n * a: function(d) { return \"A \" + d.TYPE + \" example.\"; },\n * b: function(d) { return \"This has \" + plural(d.COUNT, 0, pluralFuncs.en, { one: function() { return \"one member\";}, other: function() { return number(d.COUNT)+\" members\";} }) + \".\"; }\n * }\n * }\n *\n * @example\n * > mf.runtime.pluralFuncs.fi = MessageFormat.plurals.fi;\n * > var multiSet = { en: { a: 'A {TYPE} example.',\n * ... b: 'This is the {COUNT, selectordinal, one{#st} two{#nd} few{#rd} other{#th}} example.' },\n * ... fi: { a: '{TYPE} esimerkki.',\n * ... b: 'Tämä on {COUNT, selectordinal, other{#.}} esimerkki.' } },\n * ... multiSetLocales = { en: 'en', fi: 'fi' },\n * ... mfuncSet = mf.compile(multiSet, { locale: multiSetLocales, global: 'i18n' });\n * > mfuncSet(this);\n * > i18n.en.b({COUNT:3})\n * 'This is the 3rd example.'\n * > i18n.fi.b({COUNT:3})\n * 'Tämä on 3. esimerkki.' */\nMessageFormat.prototype.compile = function ( messages, opt ) {\n var r = {}, lc0 = this.lc,\n compileMsg = function(self, msg) {\n try {\n var ast = MessageFormat._parse(msg);\n return self._precompile(ast);\n } catch (e) {\n throw new Error((ast ? 'Precompiler' : 'Parser') + ' error: ' + e.toString());\n }\n },\n stringify = function(r, level) {\n if (!level) level = 0;\n if (typeof r != 'object') return r;\n var o = [], indent = '';\n for (var i = 0; i < level; ++i) indent += ' ';\n for (var k in r) o.push('\\n' + indent + ' ' + propname(k) + ': ' + stringify(r[k], level + 1));\n return '{' + o.join(',') + '\\n' + indent + '}';\n };\n\n if (typeof messages == 'string') {\n var f = new Function(\n 'number, plural, select, pluralFuncs, fmt',\n 'return ' + compileMsg(this, messages));\n return f(this.runtime.number, this.runtime.plural, this.runtime.select,\n this.runtime.pluralFuncs, this.runtime.fmt);\n }\n\n opt = opt || {};\n\n for (var ns in messages) {\n if (opt.locale) this.lc = opt.locale[ns] && [].concat(opt.locale[ns]) || lc0;\n if (typeof messages[ns] == 'string') {\n try { r[ns] = compileMsg(this, messages[ns]); }\n catch (e) { e.message = e.message.replace(':', ' with `' + ns + '`:'); throw e; }\n } else {\n r[ns] = {};\n for (var key in messages[ns]) {\n try { r[ns][key] = compileMsg(this, messages[ns][key]); }\n catch (e) { e.message = e.message.replace(':', ' with `' + key + '` in `' + ns + '`:'); throw e; }\n }\n }\n }\n\n this.lc = lc0;\n var s = this.runtime.toString() + '\\n';\n switch (opt.global || '') {\n case 'exports':\n var o = [];\n for (var k in r) o.push(propname(k, 'exports') + ' = ' + stringify(r[k]));\n return new Function(s + o.join(';\\n'));\n case 'module.exports':\n return new Function(s + 'module.exports = ' + stringify(r));\n case '':\n return new Function(s + 'return ' + stringify(r));\n default:\n return new Function('G', s + propname(opt.global, 'G') + ' = ' + stringify(r));\n }\n};\n\n\nreturn MessageFormat;\n}());\n/* eslint-enable */\n\n\nvar createErrorPluralModulePresence = function() {\n\treturn createError( \"E_MISSING_PLURAL_MODULE\", \"Plural module not loaded.\" );\n};\n\n\n\n\nvar validateMessageBundle = function( cldr ) {\n\tvalidate(\n\t\t\"E_MISSING_MESSAGE_BUNDLE\",\n\t\t\"Missing message bundle for locale `{locale}`.\",\n\t\tcldr.attributes.bundle && cldr.get( \"globalize-messages/{bundle}\" ) !== undefined,\n\t\t{\n\t\t\tlocale: cldr.locale\n\t\t}\n\t);\n};\n\n\n\n\nvar validateMessagePresence = function( path, value ) {\n\tpath = path.join( \"/\" );\n\tvalidate( \"E_MISSING_MESSAGE\", \"Missing required message content `{path}`.\",\n\t\tvalue !== undefined, { path: path } );\n};\n\n\n\n\nvar validateMessageType = function( path, value ) {\n\tpath = path.join( \"/\" );\n\tvalidate(\n\t\t\"E_INVALID_MESSAGE\",\n\t\t\"Invalid message content `{path}`. {expected} expected.\",\n\t\ttypeof value === \"string\",\n\t\t{\n\t\t\texpected: \"a string\",\n\t\t\tpath: path\n\t\t}\n\t);\n};\n\n\n\n\nvar validateParameterTypeMessageVariables = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || isPlainObject( value ) || Array.isArray( value ),\n\t\t\"Array or Plain Object\"\n\t);\n};\n\n\n\n\nvar messageFormatterFn = function( formatter ) {\n\treturn function messageFormatter( variables ) {\n\t\tif ( typeof variables === \"number\" || typeof variables === \"string\" ) {\n\t\t\tvariables = [].slice.call( arguments, 0 );\n\t\t}\n\t\tvalidateParameterTypeMessageVariables( variables, \"variables\" );\n\t\treturn formatter( variables );\n\t};\n};\n\n\n\n\nvar messageFormatterRuntimeBind = function( cldr, messageformatter ) {\n\tvar locale = cldr.locale,\n\t\torigToString = messageformatter.toString;\n\n\tmessageformatter.toString = function() {\n\t\tvar argNames, argValues, output,\n\t\t\targs = {};\n\n\t\t// Properly adjust SlexAxton/messageformat.js compiled variables with Globalize variables:\n\t\toutput = origToString.call( messageformatter );\n\n\t\tif ( /number\\(/.test( output ) ) {\n\t\t\targs.number = \"messageFormat.number\";\n\t\t}\n\n\t\tif ( /plural\\(/.test( output ) ) {\n\t\t\targs.plural = \"messageFormat.plural\";\n\t\t}\n\n\t\tif ( /select\\(/.test( output ) ) {\n\t\t\targs.select = \"messageFormat.select\";\n\t\t}\n\n\t\toutput.replace( /pluralFuncs(\\[([^\\]]+)\\]|\\.([a-zA-Z]+))/, function( match ) {\n\t\t\targs.pluralFuncs = \"{\" +\n\t\t\t\t\"\\\"\" + locale + \"\\\": Globalize(\\\"\" + locale + \"\\\").pluralGenerator()\" +\n\t\t\t\t\"}\";\n\t\t\treturn match;\n\t\t});\n\n\t\targNames = Object.keys( args ).join( \", \" );\n\t\targValues = Object.keys( args ).map(function( key ) {\n\t\t\treturn args[ key ];\n\t\t}).join( \", \" );\n\n\t\treturn \"(function( \" + argNames + \" ) {\\n\" +\n\t\t\t\" return \" + output + \"\\n\" +\n\t\t\t\"})(\" + argValues + \")\";\n\t};\n\n\treturn messageformatter;\n};\n\n\n\n\nvar slice = [].slice;\n\n/**\n * .loadMessages( json )\n *\n * @json [JSON]\n *\n * Load translation data.\n */\nGlobalize.loadMessages = function( json ) {\n\tvar locale,\n\t\tcustomData = {\n\t\t\t\"globalize-messages\": json,\n\t\t\t\"main\": {}\n\t\t};\n\n\tvalidateParameterPresence( json, \"json\" );\n\tvalidateParameterTypePlainObject( json, \"json\" );\n\n\t// Set available bundles by populating customData main dataset.\n\tfor ( locale in json ) {\n\t\tif ( json.hasOwnProperty( locale ) ) {\n\t\t\tcustomData.main[ locale ] = {};\n\t\t}\n\t}\n\n\tCldr.load( customData );\n};\n\n/**\n * .messageFormatter( path )\n *\n * @path [String or Array]\n *\n * Format a message given its path.\n */\nGlobalize.messageFormatter =\nGlobalize.prototype.messageFormatter = function( path ) {\n\tvar cldr, formatter, message, pluralGenerator, returnFn,\n\t\targs = slice.call( arguments, 0 );\n\n\tvalidateParameterPresence( path, \"path\" );\n\tvalidateParameterType( path, \"path\", typeof path === \"string\" || Array.isArray( path ),\n\t\t\"a String nor an Array\" );\n\n\tpath = alwaysArray( path );\n\tcldr = this.cldr;\n\n\tvalidateDefaultLocale( cldr );\n\tvalidateMessageBundle( cldr );\n\n\tmessage = cldr.get( [ \"globalize-messages/{bundle}\" ].concat( path ) );\n\tvalidateMessagePresence( path, message );\n\n\t// If message is an Array, concatenate it.\n\tif ( Array.isArray( message ) ) {\n\t\tmessage = message.join( \" \" );\n\t}\n\tvalidateMessageType( path, message );\n\n\t// Is plural module present? Yes, use its generator. Nope, use an error generator.\n\tpluralGenerator = this.plural !== undefined ?\n\t\tthis.pluralGenerator() :\n\t\tcreateErrorPluralModulePresence;\n\n\tformatter = new MessageFormat( cldr.locale, pluralGenerator ).compile( message );\n\n\treturnFn = messageFormatterFn( formatter );\n\n\truntimeBind( args, cldr, returnFn,\n\t\t[ messageFormatterRuntimeBind( cldr, formatter ), pluralGenerator ] );\n\n\treturn returnFn;\n};\n\n/**\n * .formatMessage( path [, variables] )\n *\n * @path [String or Array]\n *\n * @variables [Number, String, Array or Object]\n *\n * Format a message given its path.\n */\nGlobalize.formatMessage =\nGlobalize.prototype.formatMessage = function( path /* , variables */ ) {\n\treturn this.messageFormatter( path ).apply( {}, slice.call( arguments, 1 ) );\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar createError = Globalize._createError,\n\tpartsJoin = Globalize._partsJoin,\n\tpartsPush = Globalize._partsPush,\n\tregexpEscape = Globalize._regexpEscape,\n\truntimeBind = Globalize._runtimeBind,\n\tstringPad = Globalize._stringPad,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterRange = Globalize._validateParameterRange,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject;\n\n\nvar createErrorUnsupportedFeature = function( feature ) {\n\treturn createError( \"E_UNSUPPORTED\", \"Unsupported {feature}.\", {\n\t\tfeature: feature\n\t});\n};\n\n\n\n\nvar validateParameterTypeNumber = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"number\",\n\t\t\"Number\"\n\t);\n};\n\n\n\n\nvar validateParameterTypeString = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"string\",\n\t\t\"a string\"\n\t);\n};\n\n\n\n\nvar numberFormatterFn = function( numberToPartsFormatter ) {\n\treturn function numberFormatter( value ) {\n\t\treturn partsJoin( numberToPartsFormatter( value ));\n\t};\n};\n\n\n\n\n/**\n * NumberingSystem( cldr )\n *\n * - http://www.unicode.org/reports/tr35/tr35-numbers.html#otherNumberingSystems\n * - http://cldr.unicode.org/index/bcp47-extension\n * - http://www.unicode.org/reports/tr35/#u_Extension\n */\nvar numberNumberingSystem = function( cldr ) {\n\tvar nu = cldr.attributes[ \"u-nu\" ];\n\n\tif ( nu ) {\n\t\tif ( nu === \"traditio\" ) {\n\t\t\tnu = \"traditional\";\n\t\t}\n\t\tif ( [ \"native\", \"traditional\", \"finance\" ].indexOf( nu ) !== -1 ) {\n\n\t\t\t// Unicode locale extension `u-nu` is set using either (native, traditional or\n\t\t\t// finance). So, lookup the respective locale's numberingSystem and return it.\n\t\t\treturn cldr.main([ \"numbers/otherNumberingSystems\", nu ]);\n\t\t}\n\n\t\t// Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it.\n\t\treturn nu;\n\t}\n\n\t// Return the default numberingSystem.\n\treturn cldr.main( \"numbers/defaultNumberingSystem\" );\n};\n\n\n\n\n/**\n * Compact( name, cldr )\n *\n * @compactType [String] Compact mode, `short` or `long`.\n *\n * @cldr [Cldr instance].\n *\n * Return the localized compact map for the given compact mode.\n */\nvar numberCompact = function( compactType, cldr ) {\n\tvar maxExponent = 0;\n\n\tvar object = cldr.main([\n\t\t\"numbers/decimalFormats-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\tcompactType,\n\t\t\"decimalFormat\"\n\t]);\n\n\tobject = Object.keys( object ).reduce(function( newObject, compactKey ) {\n\t\tvar numberExponent = compactKey.split( \"0\" ).length - 1;\n\t\tvar pluralForm = compactKey.split( \"-\" )[ 2 ];\n\t\tnewObject[ numberExponent ] = newObject[ numberExponent ] || {};\n\t\tnewObject[ numberExponent ][ pluralForm ] = object[ compactKey ];\n\t\tmaxExponent = Math.max( numberExponent, maxExponent );\n\t\treturn newObject;\n\t}, {});\n\n\tobject.maxExponent = maxExponent;\n\n\treturn object;\n};\n\n\n\n\n/**\n * nuMap( cldr )\n *\n * @cldr [Cldr instance].\n *\n * Return digits map if numbering system is different than `latn`.\n */\nvar numberNumberingSystemDigitsMap = function( cldr ) {\n\tvar aux,\n\t\tnu = numberNumberingSystem( cldr );\n\n\tif ( nu === \"latn\" ) {\n\t\treturn;\n\t}\n\n\taux = cldr.supplemental([ \"numberingSystems\", nu ]);\n\n\tif ( aux._type !== \"numeric\" ) {\n\t\tthrow createErrorUnsupportedFeature( \"`\" + aux._type + \"` numbering system\" );\n\t}\n\n\treturn aux._digits;\n};\n\n\n\n\n/**\n * EBNF representation:\n *\n * number_pattern_re = prefix?\n * padding?\n * (integer_fraction_pattern | significant_pattern)\n * scientific_notation?\n * suffix?\n *\n * prefix = non_number_stuff\n *\n * padding = \"*\" regexp(.)\n *\n * integer_fraction_pattern = integer_pattern\n * fraction_pattern?\n *\n * integer_pattern = regexp([#,]*[0,]*0+)\n *\n * fraction_pattern = \".\" regexp(0*[0-9]*#*)\n *\n * significant_pattern = regexp([#,]*@+#*)\n *\n * scientific_notation = regexp(E\\+?0+)\n *\n * suffix = non_number_stuff\n *\n * non_number_stuff = regexp(('[^']+'|''|[^*#@0,.E])*)\n *\n *\n * Regexp groups:\n *\n * 0: number_pattern_re\n * 1: prefix\n * 2: -\n * 3: -\n * 4: padding\n * 5: (integer_fraction_pattern | significant_pattern)\n * 6: integer_fraction_pattern\n * 7: integer_pattern\n * 8: fraction_pattern\n * 9: significant_pattern\n * 10: scientific_notation\n * 11: suffix\n * 12: -\n */\nvar numberPatternRe = ( /^(('([^']|'')*'|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/ );\n\n\n\n\n/**\n * format( number, pattern )\n *\n * @number [Number].\n *\n * @pattern [String] raw pattern for numbers.\n *\n * Return the formatted number.\n * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html\n */\nvar numberPatternProperties = function( pattern ) {\n\tvar aux1, aux2, fractionPattern, integerFractionOrSignificantPattern, integerPattern,\n\t\tmaximumFractionDigits, maximumSignificantDigits, minimumFractionDigits,\n\t\tminimumIntegerDigits, minimumSignificantDigits, padding, prefix, primaryGroupingSize,\n\t\troundIncrement, scientificNotation, secondaryGroupingSize, significantPattern, suffix;\n\n\tpattern = pattern.match( numberPatternRe );\n\tif ( !pattern ) {\n\t\tthrow new Error( \"Invalid pattern: \" + pattern );\n\t}\n\n\tprefix = pattern[ 1 ];\n\tpadding = pattern[ 4 ];\n\tintegerFractionOrSignificantPattern = pattern[ 5 ];\n\tsignificantPattern = pattern[ 9 ];\n\tscientificNotation = pattern[ 10 ];\n\tsuffix = pattern[ 11 ];\n\n\t// Significant digit format\n\tif ( significantPattern ) {\n\t\tsignificantPattern.replace( /(@+)(#*)/, function( _match, minimumSignificantDigitsMatch, maximumSignificantDigitsMatch ) {\n\t\t\tminimumSignificantDigits = minimumSignificantDigitsMatch.length;\n\t\t\tmaximumSignificantDigits = minimumSignificantDigits +\n\t\t\t\tmaximumSignificantDigitsMatch.length;\n\t\t});\n\n\t// Integer and fractional format\n\t} else {\n\t\tfractionPattern = pattern[ 8 ];\n\t\tintegerPattern = pattern[ 7 ];\n\n\t\tif ( fractionPattern ) {\n\n\t\t\t// Minimum fraction digits, and rounding.\n\t\t\tfractionPattern.replace( /[0-9]+/, function( match ) {\n\t\t\t\tminimumFractionDigits = match;\n\t\t\t});\n\t\t\tif ( minimumFractionDigits ) {\n\t\t\t\troundIncrement = +( \"0.\" + minimumFractionDigits );\n\t\t\t\tminimumFractionDigits = minimumFractionDigits.length;\n\t\t\t} else {\n\t\t\t\tminimumFractionDigits = 0;\n\t\t\t}\n\n\t\t\t// Maximum fraction digits\n\t\t\t// 1: ignore decimal character\n\t\t\tmaximumFractionDigits = fractionPattern.length - 1; /* 1 */\n\t\t} else {\n\t\t\tminimumFractionDigits = 0;\n\t\t\tmaximumFractionDigits = 0;\n\t\t}\n\n\t\t// Minimum integer digits\n\t\tintegerPattern.replace( /0+$/, function( match ) {\n\t\t\tminimumIntegerDigits = match.length;\n\t\t});\n\t}\n\n\t// Scientific notation\n\tif ( scientificNotation ) {\n\t\tthrow createErrorUnsupportedFeature({\n\t\t\tfeature: \"scientific notation (not implemented)\"\n\t\t});\n\t}\n\n\t// Padding\n\tif ( padding ) {\n\t\tthrow createErrorUnsupportedFeature({\n\t\t\tfeature: \"padding (not implemented)\"\n\t\t});\n\t}\n\n\t// Grouping\n\tif ( ( aux1 = integerFractionOrSignificantPattern.lastIndexOf( \",\" ) ) !== -1 ) {\n\n\t\t// Primary grouping size is the interval between the last group separator and the end of\n\t\t// the integer (or the end of the significant pattern).\n\t\taux2 = integerFractionOrSignificantPattern.split( \".\" )[ 0 ];\n\t\tprimaryGroupingSize = aux2.length - aux1 - 1;\n\n\t\t// Secondary grouping size is the interval between the last two group separators.\n\t\tif ( ( aux2 = integerFractionOrSignificantPattern.lastIndexOf( \",\", aux1 - 1 ) ) !== -1 ) {\n\t\t\tsecondaryGroupingSize = aux1 - 1 - aux2;\n\t\t}\n\t}\n\n\t// Return:\n\t// 0: @prefix String\n\t// 1: @padding Array [ , ] TODO\n\t// 2: @minimumIntegerDigits non-negative integer Number value indicating the minimum integer\n\t// digits to be used. Numbers will be padded with leading zeroes if necessary.\n\t// 3: @minimumFractionDigits and\n\t// 4: @maximumFractionDigits are non-negative integer Number values indicating the minimum and\n\t// maximum fraction digits to be used. Numbers will be rounded or padded with trailing\n\t// zeroes if necessary.\n\t// 5: @minimumSignificantDigits and\n\t// 6: @maximumSignificantDigits are positive integer Number values indicating the minimum and\n\t// maximum fraction digits to be shown. Either none or both of these properties are\n\t// present; if they are, they override minimum and maximum integer and fraction digits\n\t// – the formatter uses however many integer and fraction digits are required to display\n\t// the specified number of significant digits.\n\t// 7: @roundIncrement Decimal round increment or null\n\t// 8: @primaryGroupingSize\n\t// 9: @secondaryGroupingSize\n\t// 10: @suffix String\n\treturn [\n\t\tprefix,\n\t\tpadding,\n\t\tminimumIntegerDigits,\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t\tminimumSignificantDigits,\n\t\tmaximumSignificantDigits,\n\t\troundIncrement,\n\t\tprimaryGroupingSize,\n\t\tsecondaryGroupingSize,\n\t\tsuffix\n\t];\n};\n\n\n\n\n/**\n * Symbol( name, cldr )\n *\n * @name [String] Symbol name.\n *\n * @cldr [Cldr instance].\n *\n * Return the localized symbol given its name.\n */\nvar numberSymbol = function( name, cldr ) {\n\treturn cldr.main([\n\t\t\"numbers/symbols-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\tname\n\t]);\n};\n\n\n\n\nvar numberSymbolName = {\n\t\".\": \"decimal\",\n\t\",\": \"group\",\n\t\"%\": \"percentSign\",\n\t\"+\": \"plusSign\",\n\t\"-\": \"minusSign\",\n\t\"E\": \"exponential\",\n\t\"\\u2030\": \"perMille\"\n};\n\n\n\n\n/**\n * symbolMap( cldr )\n *\n * @cldr [Cldr instance].\n *\n * Return the (localized symbol, pattern symbol) key value pair, eg. {\n * \".\": \"٫\",\n * \",\": \"٬\",\n * \"%\": \"٪\",\n * ...\n * };\n */\nvar numberSymbolMap = function( cldr ) {\n\tvar symbol,\n\t\tsymbolMap = {};\n\n\tfor ( symbol in numberSymbolName ) {\n\t\tsymbolMap[ symbol ] = numberSymbol( numberSymbolName[ symbol ], cldr );\n\t}\n\n\treturn symbolMap;\n};\n\n\n\n\nvar numberTruncate = function( value ) {\n\tif ( isNaN( value ) ) {\n\t\treturn NaN;\n\t}\n\treturn Math[ value < 0 ? \"ceil\" : \"floor\" ]( value );\n};\n\n\n\n\n/**\n * round( method )\n *\n * @method [String] with either \"round\", \"ceil\", \"floor\", or \"truncate\".\n *\n * Return function( value, incrementOrExp ):\n *\n * @value [Number] eg. 123.45.\n *\n * @incrementOrExp [Number] optional, eg. 0.1; or\n * [Object] Either { increment: } or { exponent: }\n *\n * Return the rounded number, eg:\n * - round( \"round\" )( 123.45 ): 123;\n * - round( \"ceil\" )( 123.45 ): 124;\n * - round( \"floor\" )( 123.45 ): 123;\n * - round( \"truncate\" )( 123.45 ): 123;\n * - round( \"round\" )( 123.45, 0.1 ): 123.5;\n * - round( \"round\" )( 123.45, 10 ): 120;\n *\n * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n * Ref: #376\n */\nvar numberRound = function( method ) {\n\tmethod = method || \"round\";\n\tmethod = method === \"truncate\" ? numberTruncate : Math[ method ];\n\n\treturn function( value, incrementOrExp ) {\n\t\tvar exp, increment;\n\n\t\tvalue = +value;\n\n\t\t// If the value is not a number, return NaN.\n\t\tif ( isNaN( value ) ) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\t// Exponent given.\n\t\tif ( typeof incrementOrExp === \"object\" && incrementOrExp.exponent ) {\n\t\t\texp = +incrementOrExp.exponent;\n\t\t\tincrement = 1;\n\n\t\t\tif ( exp === 0 ) {\n\t\t\t\treturn method( value );\n\t\t\t}\n\n\t\t\t// If the exp is not an integer, return NaN.\n\t\t\tif ( !( typeof exp === \"number\" && exp % 1 === 0 ) ) {\n\t\t\t\treturn NaN;\n\t\t\t}\n\n\t\t// Increment given.\n\t\t} else {\n\t\t\tincrement = +incrementOrExp || 1;\n\n\t\t\tif ( increment === 1 ) {\n\t\t\t\treturn method( value );\n\t\t\t}\n\n\t\t\t// If the increment is not a number, return NaN.\n\t\t\tif ( isNaN( increment ) ) {\n\t\t\t\treturn NaN;\n\t\t\t}\n\n\t\t\tincrement = increment.toExponential().split( \"e\" );\n\t\t\texp = +increment[ 1 ];\n\t\t\tincrement = +increment[ 0 ];\n\t\t}\n\n\t\t// Shift & Round\n\t\tvalue = value.toString().split( \"e\" );\n\t\tvalue[ 0 ] = +value[ 0 ] / increment;\n\t\tvalue[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp;\n\t\tvalue = method( +( value[ 0 ] + \"e\" + value[ 1 ] ) );\n\n\t\t// Shift back\n\t\tvalue = value.toString().split( \"e\" );\n\t\tvalue[ 0 ] = +value[ 0 ] * increment;\n\t\tvalue[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp;\n\t\treturn +( value[ 0 ] + \"e\" + value[ 1 ] );\n\t};\n};\n\n\n\n\n/**\n * formatProperties( pattern, cldr [, options] )\n *\n * @pattern [String] raw pattern for numbers.\n *\n * @cldr [Cldr instance].\n *\n * @options [Object]:\n * - minimumIntegerDigits [Number]\n * - minimumFractionDigits, maximumFractionDigits [Number]\n * - minimumSignificantDigits, maximumSignificantDigits [Number]\n * - round [String] \"ceil\", \"floor\", \"round\" (default), or \"truncate\".\n * - useGrouping [Boolean] default true.\n *\n * Return the processed properties that will be used in number/format.\n * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html\n */\nvar numberFormatProperties = function( pattern, cldr, options ) {\n\tvar negativePattern, negativePrefix, negativeProperties, negativeSuffix, positivePattern,\n\t\troundFn, properties;\n\n\tfunction getOptions( attribute, propertyIndex ) {\n\t\tif ( attribute in options ) {\n\t\t\tproperties[ propertyIndex ] = options[ attribute ];\n\t\t}\n\t}\n\n\toptions = options || {};\n\tpattern = pattern.split( \";\" );\n\n\tpositivePattern = pattern[ 0 ];\n\n\tnegativePattern = pattern[ 1 ] || \"-\" + positivePattern;\n\tnegativeProperties = numberPatternProperties( negativePattern );\n\tnegativePrefix = negativeProperties[ 0 ];\n\tnegativeSuffix = negativeProperties[ 10 ];\n\n\t// Have runtime code to refer to numberRound() instead of including it explicitly.\n\troundFn = numberRound( options.round );\n\troundFn.generatorString = function() {\n\t\treturn \"numberRound(\" + ( options.round ? \"\\\"\" + options.round + \"\\\"\" : \"\" ) + \")\";\n\t};\n\n\tproperties = numberPatternProperties( positivePattern ).concat([\n\t\tpositivePattern,\n\t\tnegativePrefix + positivePattern + negativeSuffix,\n\t\tnegativePrefix,\n\t\tnegativeSuffix,\n\t\troundFn,\n\t\tnumberSymbol( \"infinity\", cldr ),\n\t\tnumberSymbol( \"nan\", cldr ),\n\t\tnumberSymbolMap( cldr ),\n\t\tnumberNumberingSystemDigitsMap( cldr )\n\t]);\n\n\tif ( options.compact ) {\n\n\t\t// The compact digits number pattern is always `0+`, so override the following properties.\n\t\t// Note: minimumIntegerDigits would actually range from `0` to `000` based on the scale of\n\t\t// the value to be formatted, though we're always using 1 as a simplification, because the\n\t\t// number won't be zero-padded since we chose the right format based on the scale, i.e.,\n\t\t// we'd never see something like `003M` anyway.\n\t\tproperties[ 2 ] = 1; // minimumIntegerDigits\n\t\tproperties[ 3 ] = 0; // minimumFractionDigits\n\t\tproperties[ 4 ] = 0; // maximumFractionDigits\n\t\tproperties[ 5 ] = // minimumSignificantDigits &\n\t\t\tproperties[ 6 ] = undefined; // maximumSignificantDigits\n\n\t\tproperties[ 20 ] = numberCompact( options.compact, cldr );\n\t}\n\n\tgetOptions( \"minimumIntegerDigits\", 2 );\n\tgetOptions( \"minimumFractionDigits\", 3 );\n\tgetOptions( \"maximumFractionDigits\", 4 );\n\tgetOptions( \"minimumSignificantDigits\", 5 );\n\tgetOptions( \"maximumSignificantDigits\", 6 );\n\n\t// Grouping separators\n\tif ( options.useGrouping === false ) {\n\t\tproperties[ 8 ] = null;\n\t}\n\n\t// Normalize number of digits if only one of either minimumFractionDigits or\n\t// maximumFractionDigits is passed in as an option\n\tif ( \"minimumFractionDigits\" in options && !( \"maximumFractionDigits\" in options ) ) {\n\n\t\t// maximumFractionDigits = Math.max( minimumFractionDigits, maximumFractionDigits );\n\t\tproperties[ 4 ] = Math.max( properties[ 3 ], properties[ 4 ] );\n\t} else if ( !( \"minimumFractionDigits\" in options ) &&\n\t\t\t\"maximumFractionDigits\" in options ) {\n\n\t\t// minimumFractionDigits = Math.min( minimumFractionDigits, maximumFractionDigits );\n\t\tproperties[ 3 ] = Math.min( properties[ 3 ], properties[ 4 ] );\n\t}\n\n\t// Return:\n\t// 0-10: see number/pattern-properties.\n\t// 11: @positivePattern [String] Positive pattern.\n\t// 12: @negativePattern [String] Negative pattern.\n\t// 13: @negativePrefix [String] Negative prefix.\n\t// 14: @negativeSuffix [String] Negative suffix.\n\t// 15: @round [Function] Round function.\n\t// 16: @infinitySymbol [String] Infinity symbol.\n\t// 17: @nanSymbol [String] NaN symbol.\n\t// 18: @symbolMap [Object] A bunch of other symbols.\n\t// 19: @nuDigitsMap [Array] Digits map if numbering system is different than `latn`.\n\t// 20: @compactMap [Object] Map of per-digit-count format patterns for specified compact mode.\n\treturn properties;\n};\n\n\n\n\n/**\n * Generated by:\n *\n * var regenerate = require( \"regenerate\" );\n * var formatSymbols = require( \"@unicode/unicode-13.0.0/General_Category/Format/symbols\" );\n * regenerate().add( formatSymbols ).toString();\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n */\nvar regexpCfG = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC38]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/g;\n\n\n\n\n/**\n * Generated by:\n *\n * var regenerate = require( \"regenerate\" );\n * var dashSymbols = require( \"https://github.com/node-unicode/unicode-13.0.0/General_Category/Dash_Punctuation/symbols\" );\n * regenerate().add( dashSymbols ).toString();\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n *\n * NOTE: In addition to [:dash:], the below includes MINUS SIGN U+2212.\n */\nvar regexpDashG = /[\\x2D\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2E17\\u2E1A\\u2E3A\\u2E3B\\u2E40\\u301C\\u3030\\u30A0\\uFE31\\uFE32\\uFE58\\uFE63\\uFF0D\\u2212]|\\uD803\\uDEAD/g;\n\n\n\n\n/**\n * Generated by:\n *\n * var regenerate = require( \"regenerate\" );\n * var spaceSeparatorSymbols = require( \"@unicode/unicode-13.0.0/General_Category/Space_Separator/symbols\" );\n * regenerate().add( spaceSeparatorSymbols ).toString();\n *\n * https://github.com/mathiasbynens/regenerate\n * https://github.com/node-unicode/unicode-13.0.0\n */\nvar regexpZsG = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/g;\n\n\n\n\n/**\n * Loose Matching:\n * - Ignore all format characters, which includes RLM, LRM or ALM used to control BIDI\n * formatting.\n * - Map all characters in [:Zs:] to U+0020 SPACE;\n * - Map all characters in [:Dash:] to U+002D HYPHEN-MINUS;\n */\nvar looseMatching = function( value ) {\n\treturn value\n\t\t.replace( regexpCfG, \"\" )\n\t\t.replace( regexpDashG, \"-\" )\n\t\t.replace( regexpZsG, \" \" );\n};\n\n\n\n\n/**\n * parse( value, properties )\n *\n * @value [String].\n *\n * @properties [Object] Parser properties is a reduced pre-processed cldr\n * data set returned by numberParserProperties().\n *\n * Return the parsed Number (including Infinity) or NaN when value is invalid.\n * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html\n */\nvar numberParse = function( value, properties ) {\n\tvar grammar, invertedNuDigitsMap, invertedSymbolMap, negative, number, prefix, prefixNSuffix,\n\t\tsuffix, tokenizer, valid;\n\n\t// Grammar:\n\t// - Value <= NaN | PositiveNumber | NegativeNumber\n\t// - PositiveNumber <= PositivePrefix NumberOrInf PositiveSufix\n\t// - NegativeNumber <= NegativePrefix NumberOrInf\n\t// - NumberOrInf <= Number | Inf\n\tgrammar = [\n\t\t[ \"nan\" ],\n\t\t[ \"prefix\", \"infinity\", \"suffix\" ],\n\t\t[ \"prefix\", \"number\", \"suffix\" ],\n\t\t[ \"negativePrefix\", \"infinity\", \"negativeSuffix\" ],\n\t\t[ \"negativePrefix\", \"number\", \"negativeSuffix\" ]\n\t];\n\n\tinvertedSymbolMap = properties[ 0 ];\n\tinvertedNuDigitsMap = properties[ 1 ] || {};\n\ttokenizer = properties[ 2 ];\n\n\tvalue = looseMatching( value );\n\n\tfunction parse( type ) {\n\t\treturn function( lexeme ) {\n\n\t\t\t// Reverse localized symbols and numbering system.\n\t\t\tlexeme = lexeme.split( \"\" ).map(function( character ) {\n\t\t\t\treturn invertedSymbolMap[ character ] ||\n\t\t\t\t\tinvertedNuDigitsMap[ character ] ||\n\t\t\t\t\tcharacter;\n\t\t\t}).join( \"\" );\n\n\t\t\tswitch ( type ) {\n\t\t\t\tcase \"infinity\":\n\t\t\t\t\tnumber = Infinity;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"nan\":\n\t\t\t\t\tnumber = NaN;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"number\":\n\n\t\t\t\t\t// Remove grouping separators.\n\t\t\t\t\tlexeme = lexeme.replace( /,/g, \"\" );\n\n\t\t\t\t\tnumber = +lexeme;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"prefix\":\n\t\t\t\tcase \"negativePrefix\":\n\t\t\t\t\tprefix = lexeme;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"suffix\":\n\t\t\t\t\tsuffix = lexeme;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"negativeSuffix\":\n\t\t\t\t\tsuffix = lexeme;\n\t\t\t\t\tnegative = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// This should never be reached.\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( \"Internal error\" );\n\t\t\t}\n\t\t\treturn \"\";\n\t\t};\n\t}\n\n\tfunction tokenizeNParse( _value, grammar ) {\n\t\treturn grammar.some(function( statement ) {\n\t\t\tvar value = _value;\n\n\t\t\t// The whole grammar statement should be used (i.e., .every() return true) and value be\n\t\t\t// entirely consumed (i.e., !value.length).\n\t\t\treturn statement.every(function( type ) {\n\t\t\t\tif ( value.match( tokenizer[ type ] ) === null ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Consume and parse it.\n\t\t\t\tvalue = value.replace( tokenizer[ type ], parse( type ) );\n\t\t\t\treturn true;\n\t\t\t}) && !value.length;\n\t\t});\n\t}\n\n\tvalid = tokenizeNParse( value, grammar );\n\n\t// NaN\n\tif ( !valid || isNaN( number ) ) {\n\t\treturn NaN;\n\t}\n\n\tprefixNSuffix = \"\" + prefix + suffix;\n\n\t// Percent\n\tif ( prefixNSuffix.indexOf( \"%\" ) !== -1 ) {\n\t\tnumber /= 100;\n\n\t// Per mille\n\t} else if ( prefixNSuffix.indexOf( \"\\u2030\" ) !== -1 ) {\n\t\tnumber /= 1000;\n\t}\n\n\t// Negative number\n\tif ( negative ) {\n\t\tnumber *= -1;\n\t}\n\n\treturn number;\n};\n\n\n\n\nvar numberParserFn = function( properties ) {\n\treturn function numberParser( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeString( value, \"value\" );\n\n\t\treturn numberParse( value, properties );\n\t};\n\n};\n\n\n\n\n/**\n * symbolMap( cldr )\n *\n * @cldr [Cldr instance].\n *\n * Return the (localized symbol, pattern symbol) key value pair, eg. {\n * \"٫\": \".\",\n * \"٬\": \",\",\n * \"٪\": \"%\",\n * ...\n * };\n */\nvar numberSymbolInvertedMap = function( cldr ) {\n\tvar symbol,\n\t\tsymbolMap = {};\n\n\tfor ( symbol in numberSymbolName ) {\n\t\tsymbolMap[ numberSymbol( numberSymbolName[ symbol ], cldr ) ] = symbol;\n\t}\n\n\treturn symbolMap;\n};\n\n\n\n\n/**\n * objectMap( object, fn)\n *\n * - object\n *\n * - fn( pair ) => pair\n */\nvar objectMap = function( object, fn ) {\n\treturn Object.keys( object ).map(function( key ) {\n\t\treturn fn([ key, object[ key ] ]);\n\t}).reduce(function( object, pair ) {\n\t\tobject[ pair[ 0 ] ] = pair[ 1 ];\n\t\treturn object;\n\t}, {});\n};\n\n\n\n\n/**\n * removeLiteralQuotes( string )\n *\n * Return:\n * - `'` if input string is `''`.\n * - `o'clock` if input string is `'o''clock'`.\n * - `foo` if input string is `foo`, i.e., return the same value in case it isn't a single-quoted\n * string.\n */\nvar removeLiteralQuotes = function( string ) {\n\tif ( string[ 0 ] + string[ string.length - 1 ] !== \"''\" ) {\n\t\treturn string;\n\t}\n\tif ( string === \"''\" ) {\n\t\treturn \"'\";\n\t}\n\treturn string.replace( /''/g, \"'\" ).slice( 1, -1 );\n};\n\n\n\n\n/**\n * parseProperties( pattern, cldr )\n *\n * @pattern [String] raw pattern for numbers.\n *\n * @cldr [Cldr instance].\n *\n * Return parser properties, used to feed parser function.\n *\n * TODO:\n * - Scientific_notation;\n * - Padding;\n */\nvar numberParseProperties = function( pattern, cldr, options ) {\n\tvar aux, decimalSymbolRe, digitsRe, groupingSeparatorRe, infinitySymbol, invertedNuDigitsMap,\n\t\tinvertedSymbolMap, maximumFractionDigits, maximumSignificantDigits,\n\t\tminimumSignificantDigits, nanSymbol, negativePrefix, negativeSuffix, nuDigitsMap,\n\t\tnumberTokenizer, prefix, primaryGroupingSize, secondaryGroupingSize, suffix, symbolMap,\n\t\tformatProperties = numberFormatProperties( pattern, cldr, options );\n\n\tprefix = looseMatching( formatProperties[ 0 ] );\n\tmaximumFractionDigits = formatProperties[ 4 ];\n\tminimumSignificantDigits = formatProperties[ 5 ];\n\tmaximumSignificantDigits = formatProperties[ 6 ];\n\tprimaryGroupingSize = formatProperties[ 8 ];\n\tsecondaryGroupingSize = formatProperties[ 9 ];\n\tsuffix = looseMatching( formatProperties[ 10 ] );\n\tnegativePrefix = looseMatching( formatProperties[ 13 ] );\n\tnegativeSuffix = looseMatching( formatProperties[ 14 ] );\n\tinfinitySymbol = looseMatching( formatProperties[ 16 ] );\n\tnanSymbol = looseMatching( formatProperties[ 17 ] );\n\tsymbolMap = objectMap( formatProperties[ 18 ], function( pair ) {\n\t\treturn [ pair[ 0 ], looseMatching( pair[ 1 ] ) ];\n\t});\n\tnuDigitsMap = formatProperties[ 19 ];\n\n\tinvertedSymbolMap = objectMap( numberSymbolInvertedMap( cldr ), function( pair ) {\n\t\treturn [ looseMatching( pair[ 0 ] ), pair[ 1 ] ];\n\t});\n\n\tdigitsRe = nuDigitsMap ? \"[\" + nuDigitsMap + \"]\" : \"\\\\d\";\n\tgroupingSeparatorRe = regexpEscape( symbolMap[ \",\" ] );\n\tdecimalSymbolRe = regexpEscape( symbolMap[ \".\" ] );\n\n\tif ( nuDigitsMap ) {\n\t\tinvertedNuDigitsMap = nuDigitsMap.split( \"\" ).reduce(function( object, localizedDigit, i ) {\n\t\t\tobject[ localizedDigit ] = String( i );\n\t\t\treturn object;\n\t\t}, {} );\n\t}\n\n\taux = [ prefix, suffix, negativePrefix, negativeSuffix ].map(function( value ) {\n\t\treturn value.replace( /('([^']|'')+'|'')|./g, function( character, literal ) {\n\n\t\t\t// Literals\n\t\t\tif ( literal ) {\n\t\t\t\treturn removeLiteralQuotes( literal );\n\t\t\t}\n\n\t\t\t// Symbols\n\t\t\tcharacter = character.replace( /[\\-+E%\\u2030]/, function( symbol ) {\n\t\t\t\treturn symbolMap[ symbol ];\n\t\t\t});\n\n\t\t\treturn character;\n\t\t});\n\t});\n\n\tprefix = aux[ 0 ];\n\tsuffix = aux[ 1 ];\n\tnegativePrefix = aux[ 2 ];\n\tnegativeSuffix = aux[ 3 ];\n\n\t// Number\n\t//\n\t// number_re = integer fraction?\n\t//\n\t// integer = digits | digits_using_grouping_separators\n\t//\n\t// fraction = regexp((.\\d+)?)\n\t//\n\t// digits = regexp(\\d+)\n\t//\n\t// digits_w_grouping_separators = digits_w_1_grouping_separators |\n\t// digits_w_2_grouping_separators\n\t//\n\t// digits_w_1_grouping_separators = regexp(\\d{1,3}(,\\d{3})+)\n\t//\n\t// digits_w_2_grouping_separators = regexp(\\d{1,2}((,\\d{2})*(,\\d{3})))\n\n\t// Integer part\n\tnumberTokenizer = digitsRe + \"+\";\n\n\t// Grouping separators\n\tif ( primaryGroupingSize ) {\n\t\tif ( secondaryGroupingSize ) {\n\t\t\taux = digitsRe + \"{1,\" + secondaryGroupingSize + \"}((\" + groupingSeparatorRe +\n\t\t\t\tdigitsRe + \"{\" + secondaryGroupingSize + \"})*(\" + groupingSeparatorRe +\n\t\t\t\tdigitsRe + \"{\" + primaryGroupingSize + \"}))\";\n\t\t} else {\n\t\t\taux = digitsRe + \"{1,\" + primaryGroupingSize + \"}(\" + groupingSeparatorRe +\n\t\t\t\tdigitsRe + \"{\" + primaryGroupingSize + \"})+\";\n\t\t}\n\t\tnumberTokenizer = \"(\" + aux + \"|\" + numberTokenizer + \")\";\n\t}\n\n\t// Fraction part? Only included if 1 or 2.\n\t// 1: Using significant digit format.\n\t// 2: Using integer and fractional format && it has a maximumFractionDigits.\n\tif ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) || /* 1 */\n\t\t\t\tmaximumFractionDigits /* 2 */ ) {\n\n\t\t// 1: Handle trailing decimal separator, e.g., `\"1.\" => `1``.\n\t\taux = decimalSymbolRe + digitsRe + \"+\";\n\t\tnumberTokenizer = numberTokenizer + \"(\" + aux + \"|\" + decimalSymbolRe /* 1 */ + \")?\" +\n\n\t\t\t// Handle non-padded decimals, e.g., `\".12\"` => `0.12` by making the integer part\n\t\t\t// optional.\n\t\t\t\"|(\" + numberTokenizer + \")?\" + aux;\n\n\t\tnumberTokenizer = \"(\" + numberTokenizer + \")\";\n\t}\n\n\t// 0: @invertedSymbolMap [Object] Inverted symbol map.\n\t// 1: @invertedNuDigitsMap [Object] Inverted digits map if numbering system is different than\n\t// `latn`.\n\t// 2: @tokenizer [Object] Tokenizer map, used by parser to consume input.\n\treturn [\n\t\tinvertedSymbolMap,\n\t\tinvertedNuDigitsMap,\n\t\t{\n\t\t\tinfinity: new RegExp( \"^\" + regexpEscape( infinitySymbol ) ),\n\t\t\tnan: new RegExp( \"^\" + regexpEscape( nanSymbol ) ),\n\t\t\tnegativePrefix: new RegExp( \"^\" + regexpEscape( negativePrefix ) ),\n\t\t\tnegativeSuffix: new RegExp( \"^\" + regexpEscape( negativeSuffix ) ),\n\t\t\tnumber: new RegExp( \"^\" + numberTokenizer ),\n\t\t\tprefix: new RegExp( \"^\" + regexpEscape( prefix ) ),\n\t\t\tsuffix: new RegExp( \"^\" + regexpEscape( suffix ) )\n\t\t}\n\t];\n\n};\n\n\n\n\n/**\n * Pattern( style )\n *\n * @style [String] \"decimal\" (default) or \"percent\".\n *\n * @cldr [Cldr instance].\n */\nvar numberPattern = function( style, cldr ) {\n\tif ( style !== \"decimal\" && style !== \"percent\" ) {\n\t\tthrow new Error( \"Invalid style\" );\n\t}\n\n\treturn cldr.main([\n\t\t\"numbers\",\n\t\tstyle + \"Formats-numberSystem-\" + numberNumberingSystem( cldr ),\n\t\t\"standard\"\n\t]);\n};\n\n\n\n\n/**\n * EBNF representation:\n *\n * compact_pattern_re = prefix?\n * number_pattern_re\n * suffix?\n *\n * number_pattern_re = 0+\n *\n * Regexp groups:\n *\n * 0: compact_pattern_re\n * 1: prefix\n * 2: number_pattern_re (the number pattern to use in compact mode)\n * 3: suffix\n */\nvar numberCompactPatternRe = ( /^([^0]*)(0+)([^0]*)$/ );\n\n\n\n\n/**\n * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize )\n *\n * @number [Number].\n *\n * @primaryGroupingSize [Number]\n *\n * @secondaryGroupingSize [Number]\n *\n * Return the formatted number with group separator.\n */\nvar numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) {\n\tvar index,\n\t\tcurrentGroupingSize = primaryGroupingSize,\n\t\tret = \"\",\n\t\tsep = \",\",\n\t\tswitchToSecondary = secondaryGroupingSize ? true : false;\n\n\tnumber = String( number ).split( \".\" );\n\tindex = number[ 0 ].length;\n\n\twhile ( index > currentGroupingSize ) {\n\t\tret = number[ 0 ].slice( index - currentGroupingSize, index ) +\n\t\t\t( ret.length ? sep : \"\" ) + ret;\n\t\tindex -= currentGroupingSize;\n\t\tif ( switchToSecondary ) {\n\t\t\tcurrentGroupingSize = secondaryGroupingSize;\n\t\t\tswitchToSecondary = false;\n\t\t}\n\t}\n\n\tnumber[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : \"\" ) + ret;\n\treturn number.join( \".\" );\n};\n\n\n\n\n/**\n * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits,\n * maximumFractionDigits, round, roundIncrement )\n *\n * @number [Number]\n *\n * @minimumIntegerDigits [Number]\n *\n * @minimumFractionDigits [Number]\n *\n * @maximumFractionDigits [Number]\n *\n * @round [Function]\n *\n * @roundIncrement [Function]\n *\n * Return the formatted integer and fraction digits.\n */\nvar numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round,\n\troundIncrement ) {\n\n\t// Fraction\n\tif ( maximumFractionDigits ) {\n\n\t\t// Rounding\n\t\tif ( roundIncrement ) {\n\t\t\tnumber = round( number, roundIncrement );\n\n\t\t// Maximum fraction digits\n\t\t} else {\n\t\t\tnumber = round( number, { exponent: -maximumFractionDigits } );\n\t\t}\n\n\t} else {\n\t\tnumber = round( number );\n\t}\n\n\tnumber = String( number );\n\n\t// Maximum integer digits (post string phase)\n\tif ( maximumFractionDigits && /e-/.test( number ) ) {\n\n\t\t// Use toFixed( maximumFractionDigits ) to make sure small numbers like 1e-7 are\n\t\t// displayed using plain digits instead of scientific notation.\n\t\t// 1: Remove leading decimal zeros.\n\t\t// 2: Remove leading decimal separator.\n\t\t// Note: String() is still preferred so it doesn't mess up with a number precision\n\t\t// unnecessarily, e.g., (123456789.123).toFixed(10) === \"123456789.1229999959\",\n\t\t// String(123456789.123) === \"123456789.123\".\n\t\tnumber = ( +number ).toFixed( maximumFractionDigits )\n\t\t\t.replace( /0+$/, \"\" ) /* 1 */\n\t\t\t.replace( /\\.$/, \"\" ); /* 2 */\n\t}\n\n\t// Minimum fraction digits (post string phase)\n\tif ( minimumFractionDigits ) {\n\t\tnumber = number.split( \".\" );\n\t\tnumber[ 1 ] = stringPad( number[ 1 ] || \"\", minimumFractionDigits, true );\n\t\tnumber = number.join( \".\" );\n\t}\n\n\t// Minimum integer digits\n\tif ( minimumIntegerDigits ) {\n\t\tnumber = number.split( \".\" );\n\t\tnumber[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits );\n\t\tnumber = number.join( \".\" );\n\t}\n\n\treturn number;\n};\n\n\n\n\n/**\n * toPrecision( number, precision, round )\n *\n * @number (Number)\n *\n * @precision (Number) significant figures precision (not decimal precision).\n *\n * @round (Function)\n *\n * Return number.toPrecision( precision ) using the given round function.\n */\nvar numberToPrecision = function( number, precision, round ) {\n\tvar roundOrder;\n\n\tif ( number === 0 ) { // Fix #706\n\t\treturn number;\n\t}\n\n\troundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) );\n\troundOrder -= precision;\n\n\treturn round( number, { exponent: roundOrder } );\n};\n\n\n\n\n/**\n * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round )\n *\n * @number [Number]\n *\n * @minimumSignificantDigits [Number]\n *\n * @maximumSignificantDigits [Number]\n *\n * @round [Function]\n *\n * Return the formatted significant digits number.\n */\nvar numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) {\n\tvar atMinimum, atMaximum;\n\n\t// Sanity check.\n\tif ( minimumSignificantDigits > maximumSignificantDigits ) {\n\t\tmaximumSignificantDigits = minimumSignificantDigits;\n\t}\n\n\tatMinimum = numberToPrecision( number, minimumSignificantDigits, round );\n\tatMaximum = numberToPrecision( number, maximumSignificantDigits, round );\n\n\t// Use atMaximum only if it has more significant digits than atMinimum.\n\tnumber = +atMinimum === +atMaximum ? atMinimum : atMaximum;\n\n\t// Expand integer numbers, eg. 123e5 to 12300.\n\tnumber = ( +number ).toString( 10 );\n\n\tif ( ( /e/ ).test( number ) ) {\n\t\tthrow createErrorUnsupportedFeature({\n\t\t\tfeature: \"integers out of (1e21, 1e-7)\"\n\t\t});\n\t}\n\n\t// Add trailing zeros if necessary.\n\tif ( minimumSignificantDigits - number.replace( /^0+|\\./g, \"\" ).length > 0 ) {\n\t\tnumber = number.split( \".\" );\n\t\tnumber[ 1 ] = stringPad( number[ 1 ] || \"\", minimumSignificantDigits - number[ 0 ].replace( /^0+/, \"\" ).length, true );\n\t\tnumber = number.join( \".\" );\n\t}\n\n\treturn number;\n};\n\n\n\n\n/**\n * format( number, properties )\n *\n * @number [Number].\n *\n * @properties [Object] Output of number/format-properties.\n *\n * Return the formatted number.\n * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html\n */\nvar numberFormat = function( number, properties, pluralGenerator ) {\n\tvar aux, compactMap, infinitySymbol, maximumFractionDigits, maximumSignificantDigits,\n\t\tminimumFractionDigits, minimumIntegerDigits, minimumSignificantDigits, nanSymbol,\n\t\tnuDigitsMap, prefix, primaryGroupingSize, pattern, round, roundIncrement,\n\t\tsecondaryGroupingSize, stringToParts, suffix, symbolMap;\n\n\tminimumIntegerDigits = properties[ 2 ];\n\tminimumFractionDigits = properties[ 3 ];\n\tmaximumFractionDigits = properties[ 4 ];\n\tminimumSignificantDigits = properties[ 5 ];\n\tmaximumSignificantDigits = properties[ 6 ];\n\troundIncrement = properties[ 7 ];\n\tprimaryGroupingSize = properties[ 8 ];\n\tsecondaryGroupingSize = properties[ 9 ];\n\tround = properties[ 15 ];\n\tinfinitySymbol = properties[ 16 ];\n\tnanSymbol = properties[ 17 ];\n\tsymbolMap = properties[ 18 ];\n\tnuDigitsMap = properties[ 19 ];\n\tcompactMap = properties[ 20 ];\n\n\t// NaN\n\tif ( isNaN( number ) ) {\n\t\treturn [ { type: \"nan\", value: nanSymbol } ];\n\t}\n\n\tif ( number < 0 ) {\n\t\tpattern = properties[ 12 ];\n\t\tprefix = properties[ 13 ];\n\t\tsuffix = properties[ 14 ];\n\t} else {\n\t\tpattern = properties[ 11 ];\n\t\tprefix = properties[ 0 ];\n\t\tsuffix = properties[ 10 ];\n\t}\n\n\t// For prefix, suffix, and number parts.\n\tstringToParts = function( string ) {\n\t\tvar numberType = \"integer\",\n\t\t\tparts = [];\n\n\t\t// TODO Move the tokenization of all parts that don't depend on number into\n\t\t// format-properties.\n\t\tstring.replace( /('([^']|'')+'|'')|./g, function( character, literal ) {\n\n\t\t\t// Literals\n\t\t\tif ( literal ) {\n\t\t\t\tpartsPush( parts, \"literal\", removeLiteralQuotes( literal ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Currency symbol\n\t\t\tif ( character === \"\\u00A4\" ) {\n\t\t\t\tpartsPush( parts, \"currency\", character );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Symbols\n\t\t\tcharacter = character.replace( /[.,\\-+E%\\u2030]/, function( symbol ) {\n\t\t\t\tif ( symbol === \".\" ) {\n\t\t\t\t\tnumberType = \"fraction\";\n\t\t\t\t}\n\t\t\t\tpartsPush( parts, numberSymbolName[ symbol ], symbolMap[ symbol ] );\n\n\t\t\t\t// \"Erase\" handled character.\n\t\t\t\treturn \"\";\n\t\t\t});\n\n\t\t\t// Number\n\t\t\tcharacter = character.replace( /[0-9]/, function( digit ) {\n\n\t\t\t\t// Numbering system\n\t\t\t\tif ( nuDigitsMap ) {\n\t\t\t\t\tdigit = nuDigitsMap[ +digit ];\n\t\t\t\t}\n\t\t\t\tpartsPush( parts, numberType, digit );\n\n\t\t\t\t// \"Erase\" handled character.\n\t\t\t\treturn \"\";\n\t\t\t});\n\n\t\t\t// Etc\n\t\t\tcharacter.replace( /./, function( etc ) {\n\t\t\t\tpartsPush( parts, \"literal\", etc );\n\t\t\t});\n\t\t});\n\t\treturn parts;\n\t};\n\n\tprefix = stringToParts( prefix );\n\tsuffix = stringToParts( suffix );\n\n\t// Infinity\n\tif ( !isFinite( number ) ) {\n\t\treturn prefix.concat(\n\t\t\t{ type: \"infinity\", value: infinitySymbol },\n\t\t\tsuffix\n\t\t);\n\t}\n\n\t// Percent\n\tif ( pattern.indexOf( \"%\" ) !== -1 ) {\n\t\tnumber *= 100;\n\n\t// Per mille\n\t} else if ( pattern.indexOf( \"\\u2030\" ) !== -1 ) {\n\t\tnumber *= 1000;\n\t}\n\n\tvar compactPattern, compactDigits, compactProperties, divisor, numberExponent, pluralForm;\n\n\t// Compact mode: initial number digit processing\n\tif ( compactMap ) {\n\t\tnumberExponent = Math.abs( Math.floor( number ) ).toString().length - 1;\n\t\tnumberExponent = Math.min( numberExponent, compactMap.maxExponent );\n\n\t\t// Use default plural form to perform initial decimal shift\n\t\tif ( numberExponent >= 3 ) {\n\t\t\tcompactPattern = compactMap[ numberExponent ] && compactMap[ numberExponent ].other;\n\t\t}\n\n\t\tif ( compactPattern === \"0\" ) {\n\t\t\tcompactPattern = null;\n\t\t} else if ( compactPattern ) {\n\t\t\tcompactDigits = compactPattern.split( \"0\" ).length - 1;\n\t\t\tdivisor = numberExponent - ( compactDigits - 1 );\n\t\t\tnumber = number / Math.pow( 10, divisor );\n\t\t}\n\t}\n\n\t// Significant digit format\n\tif ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) {\n\t\tnumber = numberFormatSignificantDigits( number, minimumSignificantDigits,\n\t\t\tmaximumSignificantDigits, round );\n\n\t// Integer and fractional format\n\t} else {\n\t\tnumber = numberFormatIntegerFractionDigits( number, minimumIntegerDigits,\n\t\t\tminimumFractionDigits, maximumFractionDigits, round, roundIncrement );\n\t}\n\n\t// Compact mode: apply formatting\n\tif ( compactMap && compactPattern ) {\n\n\t\t// Get plural form after possible roundings\n\t\tpluralForm = pluralGenerator ? pluralGenerator( +number ) : \"other\";\n\n\t\tcompactPattern = compactMap[ numberExponent ][ pluralForm ] || compactPattern;\n\t\tcompactProperties = compactPattern.match( numberCompactPatternRe );\n\n\t\t// TODO Move the tokenization of all parts that don't depend on number into\n\t\t// format-properties.\n\t\taux = function( string ) {\n\t\t\tvar parts = [];\n\t\t\tstring.replace( /(\\s+)|([^\\s0]+)/g, function( _garbage, space, compact ) {\n\n\t\t\t\t// Literals\n\t\t\t\tif ( space ) {\n\t\t\t\t\tpartsPush( parts, \"literal\", space );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Compact value\n\t\t\t\tif ( compact ) {\n\t\t\t\t\tpartsPush( parts, \"compact\", compact );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn parts;\n\t\t};\n\n\t\t// update prefix/suffix with compact prefix/suffix\n\t\tprefix = prefix.concat( aux( compactProperties[ 1 ] ) );\n\t\tsuffix = aux( compactProperties[ 3 ] ).concat( suffix );\n\t}\n\n\t// Remove the possible number minus sign\n\tnumber = number.replace( /^-/, \"\" );\n\n\t// Grouping separators\n\tif ( primaryGroupingSize ) {\n\t\tnumber = numberFormatGroupingSeparator( number, primaryGroupingSize,\n\t\t\tsecondaryGroupingSize );\n\t}\n\n\t// Scientific notation\n\t// TODO implement here\n\n\t// Padding/'([^']|'')+'|''|[.,\\-+E%\\u2030]/g\n\t// TODO implement here\n\n\treturn prefix.concat(\n\t\tstringToParts( number ),\n\t\tsuffix\n\t);\n};\n\n\n\n\nvar numberToPartsFormatterFn = function( properties, pluralGenerator ) {\n\treturn function numberToPartsFormatter( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeNumber( value, \"value\" );\n\n\t\treturn numberFormat( value, properties, pluralGenerator );\n\t};\n};\n\n\n\n\nfunction validateDigits( properties ) {\n\tvar minimumIntegerDigits = properties[ 2 ],\n\t\tminimumFractionDigits = properties[ 3 ],\n\t\tmaximumFractionDigits = properties[ 4 ],\n\t\tminimumSignificantDigits = properties[ 5 ],\n\t\tmaximumSignificantDigits = properties[ 6 ];\n\n\t// Validate significant digit format properties\n\tif ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) {\n\t\tvalidateParameterRange( minimumSignificantDigits, \"minimumSignificantDigits\", 1, 21 );\n\t\tvalidateParameterRange( maximumSignificantDigits, \"maximumSignificantDigits\",\n\t\t\tminimumSignificantDigits, 21 );\n\n\t} else if ( !isNaN( minimumSignificantDigits ) || !isNaN( maximumSignificantDigits ) ) {\n\t\tthrow new Error( \"Neither or both the minimum and maximum significant digits must be \" +\n\t\t\t\"present\" );\n\n\t// Validate integer and fractional format\n\t} else {\n\t\tvalidateParameterRange( minimumIntegerDigits, \"minimumIntegerDigits\", 1, 21 );\n\t\tvalidateParameterRange( minimumFractionDigits, \"minimumFractionDigits\", 0, 20 );\n\t\tvalidateParameterRange( maximumFractionDigits, \"maximumFractionDigits\",\n\t\t\tminimumFractionDigits, 20 );\n\t}\n}\n\n/**\n * .numberFormatter( [options] )\n *\n * @options [Object]:\n * - style: [String] \"decimal\" (default) or \"percent\".\n * - see also number/format options.\n *\n * Return a function that formats a number according to the given options and default/instance\n * locale.\n */\nGlobalize.numberFormatter =\nGlobalize.prototype.numberFormatter = function( options ) {\n\tvar args, numberToPartsFormatter, returnFn;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\targs = [ options ];\n\n\tnumberToPartsFormatter = this.numberToPartsFormatter( options );\n\treturnFn = numberFormatterFn( numberToPartsFormatter );\n\truntimeBind( args, this.cldr, returnFn, [ numberToPartsFormatter ] );\n\n\treturn returnFn;\n};\n\n/**\n * .numberToPartsFormatter( [options] )\n *\n * @options [Object]:\n * - style: [String] \"symbol\" (default), \"accounting\", \"code\" or \"name\".\n * - see also number/format options.\n *\n * Return a function that formats a number to parts according to the given options and\n * default/instance locale.\n */\nGlobalize.numberToPartsFormatter =\nGlobalize.prototype.numberToPartsFormatter = function( options ) {\n\tvar args, cldr, fnArgs, pattern, properties, returnFn;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\tcldr = this.cldr;\n\n\targs = [ options ];\n\n\tvalidateDefaultLocale( cldr );\n\n\tcldr.on( \"get\", validateCldr );\n\ttry {\n\t\tif ( options.raw ) {\n\t\t\tpattern = options.raw;\n\t\t} else {\n\t\t\tpattern = numberPattern( options.style || \"decimal\", cldr );\n\t\t}\n\n\t\tproperties = numberFormatProperties( pattern, cldr, options );\n\t\tfnArgs = [ properties ];\n\t} finally {\n\t\tcldr.off( \"get\", validateCldr );\n\t}\n\n\tvalidateDigits( properties );\n\n\tif ( options.compact ) {\n\t\tfnArgs.push( this.pluralGenerator() );\n\t}\n\treturnFn = numberToPartsFormatterFn.apply( null, fnArgs );\n\truntimeBind( args, cldr, returnFn, fnArgs );\n\n\treturn returnFn;\n};\n\n/**\n * .numberParser( [options] )\n *\n * @options [Object]:\n * - style: [String] \"decimal\" (default) or \"percent\".\n *\n * Return the number parser according to the default/instance locale.\n */\nGlobalize.numberParser =\nGlobalize.prototype.numberParser = function( options ) {\n\tvar args, cldr, pattern, properties, returnFn;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\tcldr = this.cldr;\n\n\targs = [ options ];\n\n\tvalidateDefaultLocale( cldr );\n\tif ( options.compact ) {\n\t\tthrow createErrorUnsupportedFeature({\n\t\t\tfeature: \"compact number parsing (not implemented)\"\n\t\t});\n\t}\n\n\tcldr.on( \"get\", validateCldr );\n\n\tif ( options.raw ) {\n\t\tpattern = options.raw;\n\t} else {\n\t\tpattern = numberPattern( options.style || \"decimal\", cldr );\n\t}\n\n\tproperties = numberParseProperties( pattern, cldr, options );\n\n\tcldr.off( \"get\", validateCldr );\n\n\treturnFn = numberParserFn( properties );\n\n\truntimeBind( args, cldr, returnFn, [ properties ] );\n\n\treturn returnFn;\n};\n\n/**\n * .formatNumber( value [, options] )\n *\n * @value [Number] number to be formatted.\n *\n * @options [Object]: see number/format-properties.\n *\n * Format a number according to the given options and default/instance locale.\n */\nGlobalize.formatNumber =\nGlobalize.prototype.formatNumber = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\n\treturn this.numberFormatter( options )( value );\n};\n\n/**\n * .formatNumberToParts( value [, options] )\n *\n * @value [Number] number to be formatted.\n *\n * @options [Object]: see number/format-properties.\n *\n * Format a number to pars according to the given options and default/instance locale.\n */\nGlobalize.formatNumberToParts =\nGlobalize.prototype.formatNumberToParts = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\n\treturn this.numberToPartsFormatter( options )( value );\n};\n\n/**\n * .parseNumber( value [, options] )\n *\n * @value [String]\n *\n * @options [Object]: See numberParser().\n *\n * Return the parsed Number (including Infinity) or NaN when value is invalid.\n */\nGlobalize.parseNumber =\nGlobalize.prototype.parseNumber = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeString( value, \"value\" );\n\n\treturn this.numberParser( options )( value );\n};\n\n/**\n * Optimization to avoid duplicating some internal functions across modules.\n */\nGlobalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature;\nGlobalize._numberNumberingSystem = numberNumberingSystem;\nGlobalize._numberNumberingSystemDigitsMap = numberNumberingSystemDigitsMap;\nGlobalize._numberPattern = numberPattern;\nGlobalize._numberSymbol = numberSymbol;\nGlobalize._looseMatching = looseMatching;\nGlobalize._removeLiteralQuotes = removeLiteralQuotes;\nGlobalize._stringPad = stringPad;\nGlobalize._validateParameterTypeNumber = validateParameterTypeNumber;\nGlobalize._validateParameterTypeString = validateParameterTypeString;\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar runtimeBind = Globalize._runtimeBind,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterType = Globalize._validateParameterType,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject;\nvar MakePlural;\n/* eslint-disable */\nMakePlural = (function() {\n'use strict';\n\nvar _toArray = function (arr) { return Array.isArray(arr) ? arr : Array.from(arr); };\n\nvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\n\n/**\n * make-plural.js -- https://github.com/eemeli/make-plural.js/\n * Copyright (c) 2014-2015 by Eemeli Aro \n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * The software is provided \"as is\" and the author disclaims all warranties\n * with regard to this software including all implied warranties of\n * merchantability and fitness. In no event shall the author be liable for\n * any special, direct, indirect, or consequential damages or any damages\n * whatsoever resulting from loss of use, data or profits, whether in an\n * action of contract, negligence or other tortious action, arising out of\n * or in connection with the use or performance of this software.\n */\n\nvar Parser = (function () {\n function Parser() {\n _classCallCheck(this, Parser);\n }\n\n _createClass(Parser, [{\n key: 'parse',\n value: function parse(cond) {\n var _this = this;\n\n if (cond === 'i = 0 or n = 1') {\n return 'n >= 0 && n <= 1';\n }if (cond === 'i = 0,1') {\n return 'n >= 0 && n < 2';\n }if (cond === 'i = 1 and v = 0') {\n this.v0 = 1;\n return 'n == 1 && v0';\n }\n return cond.replace(/([tv]) (!?)= 0/g, function (m, sym, noteq) {\n var sn = sym + '0';\n _this[sn] = 1;\n return noteq ? '!' + sn : sn;\n }).replace(/\\b[fintv]\\b/g, function (m) {\n _this[m] = 1;\n return m;\n }).replace(/([fin]) % (10+)/g, function (m, sym, num) {\n var sn = sym + num;\n _this[sn] = 1;\n return sn;\n }).replace(/n10+ = 0/g, 't0 && $&').replace(/(\\w+ (!?)= )([0-9.]+,[0-9.,]+)/g, function (m, se, noteq, x) {\n if (m === 'n = 0,1') return '(n == 0 || n == 1)';\n if (noteq) return se + x.split(',').join(' && ' + se);\n return '(' + se + x.split(',').join(' || ' + se) + ')';\n }).replace(/(\\w+) (!?)= ([0-9]+)\\.\\.([0-9]+)/g, function (m, sym, noteq, x0, x1) {\n if (Number(x0) + 1 === Number(x1)) {\n if (noteq) return '' + sym + ' != ' + x0 + ' && ' + sym + ' != ' + x1;\n return '(' + sym + ' == ' + x0 + ' || ' + sym + ' == ' + x1 + ')';\n }\n if (noteq) return '(' + sym + ' < ' + x0 + ' || ' + sym + ' > ' + x1 + ')';\n if (sym === 'n') {\n _this.t0 = 1;return '(t0 && n >= ' + x0 + ' && n <= ' + x1 + ')';\n }\n return '(' + sym + ' >= ' + x0 + ' && ' + sym + ' <= ' + x1 + ')';\n }).replace(/ and /g, ' && ').replace(/ or /g, ' || ').replace(/ = /g, ' == ');\n }\n }, {\n key: 'vars',\n value: (function (_vars) {\n function vars() {\n return _vars.apply(this, arguments);\n }\n\n vars.toString = function () {\n return _vars.toString();\n };\n\n return vars;\n })(function () {\n var vars = [];\n if (this.i) vars.push('i = s[0]');\n if (this.f || this.v) vars.push('f = s[1] || \\'\\'');\n if (this.t) vars.push('t = (s[1] || \\'\\').replace(/0+$/, \\'\\')');\n if (this.v) vars.push('v = f.length');\n if (this.v0) vars.push('v0 = !s[1]');\n if (this.t0 || this.n10 || this.n100) vars.push('t0 = Number(s[0]) == n');\n for (var k in this) {\n if (/^.10+$/.test(k)) {\n var k0 = k[0] === 'n' ? 't0 && s[0]' : k[0];\n vars.push('' + k + ' = ' + k0 + '.slice(-' + k.substr(2).length + ')');\n }\n }if (!vars.length) return '';\n return 'var ' + ['s = String(n).split(\\'.\\')'].concat(vars).join(', ');\n })\n }]);\n\n return Parser;\n})();\n\n\n\nvar MakePlural = (function () {\n function MakePlural(lc) {\n var _ref = arguments[1] === undefined ? MakePlural : arguments[1];\n\n var cardinals = _ref.cardinals;\n var ordinals = _ref.ordinals;\n\n _classCallCheck(this, MakePlural);\n\n if (!cardinals && !ordinals) throw new Error('At least one type of plural is required');\n this.lc = lc;\n this.categories = { cardinal: [], ordinal: [] };\n this.parser = new Parser();\n \n this.fn = this.buildFunction(cardinals, ordinals);\n this.fn._obj = this;\n this.fn.categories = this.categories;\n \n this.fn.toString = this.fnToString.bind(this);\n return this.fn;\n }\n\n _createClass(MakePlural, [{\n key: 'compile',\n value: function compile(type, req) {\n var cases = [];\n var rules = MakePlural.rules[type][this.lc];\n if (!rules) {\n if (req) throw new Error('Locale \"' + this.lc + '\" ' + type + ' rules not found');\n this.categories[type] = ['other'];\n return '\\'other\\'';\n }\n for (var r in rules) {\n var _rules$r$trim$split = rules[r].trim().split(/\\s*@\\w*/);\n\n var _rules$r$trim$split2 = _toArray(_rules$r$trim$split);\n\n var cond = _rules$r$trim$split2[0];\n var examples = _rules$r$trim$split2.slice(1);\n var cat = r.replace('pluralRule-count-', '');\n if (cond) cases.push([this.parser.parse(cond), cat]);\n \n }\n this.categories[type] = cases.map(function (c) {\n return c[1];\n }).concat('other');\n if (cases.length === 1) {\n return '(' + cases[0][0] + ') ? \\'' + cases[0][1] + '\\' : \\'other\\'';\n } else {\n return [].concat(_toConsumableArray(cases.map(function (c) {\n return '(' + c[0] + ') ? \\'' + c[1] + '\\'';\n })), ['\\'other\\'']).join('\\n : ');\n }\n }\n }, {\n key: 'buildFunction',\n value: function buildFunction(cardinals, ordinals) {\n var _this3 = this;\n\n var compile = function compile(c) {\n return c ? (c[1] ? 'return ' : 'if (ord) return ') + _this3.compile.apply(_this3, _toConsumableArray(c)) : '';\n },\n fold = { vars: function vars(str) {\n return (' ' + str + ';').replace(/(.{1,78})(,|$) ?/g, '$1$2\\n ');\n },\n cond: function cond(str) {\n return (' ' + str + ';').replace(/(.{1,78}) (\\|\\| |$) ?/gm, '$1\\n $2');\n } },\n cond = [ordinals && ['ordinal', !cardinals], cardinals && ['cardinal', true]].map(compile).map(fold.cond),\n body = [fold.vars(this.parser.vars())].concat(_toConsumableArray(cond)).join('\\n').replace(/\\s+$/gm, '').replace(/^[\\s;]*[\\r\\n]+/gm, ''),\n args = ordinals && cardinals ? 'n, ord' : 'n';\n return new Function(args, body);\n }\n }, {\n key: 'fnToString',\n value: function fnToString(name) {\n return Function.prototype.toString.call(this.fn).replace(/^function( \\w+)?/, name ? 'function ' + name : 'function').replace('\\n/**/', '');\n }\n }], [{\n key: 'load',\n value: function load() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n args.forEach(function (cldr) {\n var data = cldr && cldr.supplemental || null;\n if (!data) throw new Error('Data does not appear to be CLDR data');\n MakePlural.rules = {\n cardinal: data['plurals-type-cardinal'] || MakePlural.rules.cardinal,\n ordinal: data['plurals-type-ordinal'] || MakePlural.rules.ordinal\n };\n });\n return MakePlural;\n }\n }]);\n\n return MakePlural;\n})();\n\n\n\nMakePlural.cardinals = true;\nMakePlural.ordinals = false;\nMakePlural.rules = { cardinal: {}, ordinal: {} };\n\n\nreturn MakePlural;\n}());\n/* eslint-enable */\n\n\nvar validateParameterTypeNumber = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || typeof value === \"number\",\n\t\t\"Number\"\n\t);\n};\n\n\n\n\nvar validateParameterTypePluralType = function( value, name ) {\n\tvalidateParameterType(\n\t\tvalue,\n\t\tname,\n\t\tvalue === undefined || value === \"cardinal\" || value === \"ordinal\",\n\t\t\"String \\\"cardinal\\\" or \\\"ordinal\\\"\"\n\t);\n};\n\n\n\n\nvar pluralGeneratorFn = function( plural ) {\n\treturn function pluralGenerator( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeNumber( value, \"value\" );\n\n\t\treturn plural( value );\n\t};\n};\n\n\n\n\n/**\n * .plural( value )\n *\n * @value [Number]\n *\n * Return the corresponding form (zero | one | two | few | many | other) of a\n * value given locale.\n */\nGlobalize.plural =\nGlobalize.prototype.plural = function( value, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\treturn this.pluralGenerator( options )( value );\n};\n\n/**\n * .pluralGenerator( [options] )\n *\n * Return a plural function (of the form below).\n *\n * fn( value )\n *\n * @value [Number]\n *\n * Return the corresponding form (zero | one | two | few | many | other) of a value given the\n * default/instance locale.\n */\nGlobalize.pluralGenerator =\nGlobalize.prototype.pluralGenerator = function( options ) {\n\tvar args, cldr, isOrdinal, plural, returnFn, type;\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\tcldr = this.cldr;\n\n\targs = [ options ];\n\ttype = options.type || \"cardinal\";\n\n\tvalidateParameterTypePluralType( options.type, \"options.type\" );\n\n\tvalidateDefaultLocale( cldr );\n\n\tisOrdinal = type === \"ordinal\";\n\n\tcldr.on( \"get\", validateCldr );\n\ttry {\n\t\tcldr.supplemental([ \"plurals-type-\" + type, \"{language}\" ]);\n\t} finally {\n\t\tcldr.off( \"get\", validateCldr );\n\t}\n\n\tMakePlural.rules = {};\n\tMakePlural.rules[ type ] = cldr.supplemental( \"plurals-type-\" + type );\n\n\tplural = new MakePlural( cldr.attributes.language, {\n\t\t\"ordinals\": isOrdinal,\n\t\t\"cardinals\": !isOrdinal\n\t});\n\n\treturnFn = pluralGeneratorFn( plural );\n\n\truntimeBind( args, cldr, returnFn, [ plural ] );\n\n\treturn returnFn;\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"./number\",\n\t\t\t\"./plural\",\n\t\t\t\"cldr/event\",\n\t\t\t\"cldr/supplemental\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Extend global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar formatMessage = Globalize._formatMessage,\n\truntimeBind = Globalize._runtimeBind,\n\tvalidateCldr = Globalize._validateCldr,\n\tvalidateDefaultLocale = Globalize._validateDefaultLocale,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterTypeString = Globalize._validateParameterTypeString,\n\tvalidateParameterTypeNumber = Globalize._validateParameterTypeNumber;\n\n\n/**\n * format( value, numberFormatter, pluralGenerator, properties )\n *\n * @value [Number] The number to format\n *\n * @numberFormatter [String] A numberFormatter from Globalize.numberFormatter\n *\n * @pluralGenerator [String] A pluralGenerator from Globalize.pluralGenerator\n *\n * @properties [Object] containing relative time plural message.\n *\n * Format relative time.\n */\nvar relativeTimeFormat = function( value, numberFormatter, pluralGenerator, properties ) {\n\n\tvar relativeTime,\n\t\tmessage = properties[ \"relative-type-\" + value ];\n\n\tif ( message ) {\n\t\treturn message;\n\t}\n\n\trelativeTime = value <= 0 ? properties[ \"relativeTime-type-past\" ] :\n\t\tproperties[ \"relativeTime-type-future\" ];\n\n\tvalue = Math.abs( value );\n\n\tmessage = relativeTime[ \"relativeTimePattern-count-\" + pluralGenerator( value ) ];\n\treturn formatMessage( message, [ numberFormatter( value ) ] );\n};\n\n\n\n\nvar relativeTimeFormatterFn = function( numberFormatter, pluralGenerator, properties ) {\n\treturn function relativeTimeFormatter( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeNumber( value, \"value\" );\n\n\t\treturn relativeTimeFormat( value, numberFormatter, pluralGenerator, properties );\n\t};\n\n};\n\n\n\n\n/**\n * properties( unit, cldr, options )\n *\n * @unit [String] eg. \"day\", \"week\", \"month\", etc.\n *\n * @cldr [Cldr instance].\n *\n * @options [Object]\n * - form: [String] eg. \"short\" or \"narrow\". Or falsy for default long form.\n *\n * Return relative time properties.\n */\nvar relativeTimeProperties = function( unit, cldr, options ) {\n\n\tvar form = options.form,\n\t\traw, properties, key, match;\n\n\tif ( form ) {\n\t\tunit = unit + \"-\" + form;\n\t}\n\n\traw = cldr.main( [ \"dates\", \"fields\", unit ] );\n\tproperties = {\n\t\t\"relativeTime-type-future\": raw[ \"relativeTime-type-future\" ],\n\t\t\"relativeTime-type-past\": raw[ \"relativeTime-type-past\" ]\n\t};\n\tfor ( key in raw ) {\n\t\tif ( raw.hasOwnProperty( key ) ) {\n\t\t\tmatch = /relative-type-(-?[0-9]+)/.exec( key );\n\t\t\tif ( match ) {\n\t\t\t\tproperties[ key ] = raw[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn properties;\n};\n\n\n\n\n/**\n * .formatRelativeTime( value, unit [, options] )\n *\n * @value [Number] The number of unit to format.\n *\n * @unit [String] see .relativeTimeFormatter() for details.\n *\n * @options [Object] see .relativeTimeFormatter() for details.\n *\n * Formats a relative time according to the given unit, options, and the default/instance locale.\n */\nGlobalize.formatRelativeTime =\nGlobalize.prototype.formatRelativeTime = function( value, unit, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\n\treturn this.relativeTimeFormatter( unit, options )( value );\n};\n\n/**\n * .relativeTimeFormatter( unit [, options ])\n *\n * @unit [String] String value indicating the unit to be formatted. eg. \"day\", \"week\", \"month\", etc.\n *\n * @options [Object]\n * - form: [String] eg. \"short\" or \"narrow\". Or falsy for default long form.\n *\n * Returns a function that formats a relative time according to the given unit, options, and the\n * default/instance locale.\n */\nGlobalize.relativeTimeFormatter =\nGlobalize.prototype.relativeTimeFormatter = function( unit, options ) {\n\tvar args, cldr, numberFormatter, pluralGenerator, properties, returnFn;\n\n\tvalidateParameterPresence( unit, \"unit\" );\n\tvalidateParameterTypeString( unit, \"unit\" );\n\n\tcldr = this.cldr;\n\toptions = options || {};\n\n\targs = [ unit, options ];\n\n\tvalidateDefaultLocale( cldr );\n\n\tcldr.on( \"get\", validateCldr );\n\ttry {\n\t\tproperties = relativeTimeProperties( unit, cldr, options );\n\t} finally {\n\t\tcldr.off( \"get\", validateCldr );\n\t}\n\tnumberFormatter = this.numberFormatter( options );\n\tpluralGenerator = this.pluralGenerator();\n\n\treturnFn = relativeTimeFormatterFn( numberFormatter, pluralGenerator, properties );\n\n\truntimeBind( args, cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] );\n\n\treturn returnFn;\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/**\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n/*!\n * Globalize v1.7.0 2021-08-02T11:53Z Released under the MIT license\n * http://git.io/TrdQbw\n */\n(function( root, factory ) {\n\n\t// UMD returnExports\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD\n\t\tdefine([\n\t\t\t\"cldr\",\n\t\t\t\"../globalize\",\n\t\t\t\"./number\",\n\t\t\t\"./plural\"\n\t\t], factory );\n\t} else if ( typeof exports === \"object\" ) {\n\n\t\t// Node, CommonJS\n\t\tmodule.exports = factory( require( \"cldrjs\" ), require( \"../globalize\" ) );\n\t} else {\n\n\t\t// Extend global\n\t\tfactory( root.Cldr, root.Globalize );\n\t}\n}(this, function( Cldr, Globalize ) {\n\nvar formatMessage = Globalize._formatMessage,\n\truntimeBind = Globalize._runtimeBind,\n\tvalidateParameterPresence = Globalize._validateParameterPresence,\n\tvalidateParameterTypePlainObject = Globalize._validateParameterTypePlainObject,\n\tvalidateParameterTypeNumber = Globalize._validateParameterTypeNumber,\n\tvalidateParameterTypeString = Globalize._validateParameterTypeString;\n\n\n/**\n * format( value, numberFormatter, pluralGenerator, unitProperies )\n *\n * @value [Number]\n *\n * @numberFormatter [Object]: A numberFormatter from Globalize.numberFormatter.\n *\n * @pluralGenerator [Object]: A pluralGenerator from Globalize.pluralGenerator.\n *\n * @unitProperies [Object]: localized unit data from cldr.\n *\n * Format units such as seconds, minutes, days, weeks, etc.\n *\n * OBS:\n *\n * Unit Sequences are not implemented.\n * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#Unit_Sequences\n *\n * Duration Unit (for composed time unit durations) is not implemented.\n * http://www.unicode.org/reports/tr35/tr35-35/tr35-general.html#durationUnit\n */\nvar unitFormat = function( value, numberFormatter, pluralGenerator, unitProperties ) {\n\tvar compoundUnitPattern = unitProperties.compoundUnitPattern, dividend, dividendProperties,\n\t\tformattedValue, divisor, divisorProperties, message, pluralValue, oneProperty;\n\n\tunitProperties = unitProperties.unitProperties;\n\tformattedValue = numberFormatter( value );\n\tpluralValue = pluralGenerator( value );\n\n\t// computed compound unit, eg. \"megabyte-per-second\".\n\tif ( unitProperties instanceof Array ) {\n\t\tdividendProperties = unitProperties[ 0 ];\n\t\tdivisorProperties = unitProperties[ 1 ];\n\t\toneProperty = divisorProperties.hasOwnProperty( \"one\" ) ? \"one\" : \"other\";\n\n\t\tdividend = formatMessage( dividendProperties[ pluralValue ], [ formattedValue ] );\n\t\tdivisor = formatMessage( divisorProperties[ oneProperty ], [ \"\" ] ).trim();\n\n\t\treturn formatMessage( compoundUnitPattern, [ dividend, divisor ] );\n\t}\n\n\tmessage = unitProperties[ pluralValue ];\n\n\treturn formatMessage( message, [ formattedValue ] );\n};\n\n\n\n\nvar unitFormatterFn = function( numberFormatter, pluralGenerator, unitProperties ) {\n\treturn function unitFormatter( value ) {\n\t\tvalidateParameterPresence( value, \"value\" );\n\t\tvalidateParameterTypeNumber( value, \"value\" );\n\n\t\treturn unitFormat( value, numberFormatter, pluralGenerator, unitProperties );\n\t};\n\n};\n\n\n\n\n/**\n * categories()\n *\n * Return all unit categories.\n */\nvar unitCategories = [ \"acceleration\", \"angle\", \"area\", \"digital\", \"duration\", \"length\", \"mass\", \"power\",\n\"pressure\", \"speed\", \"temperature\", \"volume\" ];\n\n\n\n\nfunction stripPluralGarbage( data ) {\n\tvar aux, pluralCount;\n\n\tif ( data ) {\n\t\taux = {};\n\t\tfor ( pluralCount in data ) {\n\t\t\taux[ pluralCount.replace( /unitPattern-count-/, \"\" ) ] = data[ pluralCount ];\n\t\t}\n\t}\n\n\treturn aux;\n}\n\n/**\n * get( unit, form, cldr )\n *\n * @unit [String] The full type-unit name (eg. duration-second), or the short unit name\n * (eg. second).\n *\n * @form [String] A string describing the form of the unit representation (eg. long,\n * short, narrow).\n *\n * @cldr [Cldr instance].\n *\n * Return the plural map of a unit, eg: \"second\"\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" }\n * }\n *\n * Or the Array of plural maps of a compound-unit, eg: \"foot-per-second\"\n * [ { \"one\": \"{0} foot\",\n * \"other\": \"{0} feet\" },\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" } ]\n *\n * Uses the precomputed form of a compound-unit if available, eg: \"mile-per-hour\"\n * { \"displayName\": \"miles per hour\",\n * \"unitPattern-count-one\": \"{0} mile per hour\",\n * \"unitPattern-count-other\": \"{0} miles per hour\"\n * },\n *\n * Also supports \"/\" instead of \"-per-\", eg. \"foot/second\", using the precomputed form if\n * available.\n *\n * Or the Array of plural maps of a compound-unit, eg: \"foot-per-second\"\n * [ { \"one\": \"{0} foot\",\n * \"other\": \"{0} feet\" },\n * { \"one\": \"{0} second\",\n * \"other\": \"{0} seconds\" } ]\n *\n * Or undefined in case the unit (or a unit of the compound-unit) doesn't exist.\n */\nvar get = function( unit, form, cldr ) {\n\tvar ret;\n\n\t// Ensure that we get the 'precomputed' form, if present.\n\tunit = unit.replace( /\\//, \"-per-\" );\n\n\t// Get unit or -unit (eg. \"duration-second\").\n\t[ \"\" ].concat( unitCategories ).some(function( category ) {\n\t\treturn ret = cldr.main([\n\t\t\t\"units\",\n\t\t\tform,\n\t\t\tcategory.length ? category + \"-\" + unit : unit\n\t\t]);\n\t});\n\n\t// Rename keys s/unitPattern-count-//g.\n\tret = stripPluralGarbage( ret );\n\n\t// Compound Unit, eg. \"foot-per-second\" or \"foot/second\".\n\tif ( !ret && ( /-per-/ ).test( unit ) ) {\n\n\t\t// \"Some units already have 'precomputed' forms, such as kilometer-per-hour;\n\t\t// where such units exist, they should be used in preference\" UTS#35.\n\t\t// Note that precomputed form has already been handled above (!ret).\n\n\t\t// Get both recursively.\n\t\tunit = unit.split( \"-per-\" );\n\t\tret = unit.map(function( unit ) {\n\t\t\treturn get( unit, form, cldr );\n\t\t});\n\t\tif ( !ret[ 0 ] || !ret[ 1 ] ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\treturn ret;\n};\n\nvar unitGet = get;\n\n\n\n\n/**\n * properties( unit, form, cldr )\n *\n * @unit [String] The full type-unit name (eg. duration-second), or the short unit name\n * (eg. second).\n *\n * @form [String] A string describing the form of the unit representation (eg. long,\n * short, narrow).\n *\n * @cldr [Cldr instance].\n */\nvar unitProperties = function( unit, form, cldr ) {\n\tvar compoundUnitPattern, unitProperties;\n\n\tcompoundUnitPattern = cldr.main( [ \"units\", form, \"per/compoundUnitPattern\" ] );\n\tunitProperties = unitGet( unit, form, cldr );\n\n\treturn {\n\t\tcompoundUnitPattern: compoundUnitPattern,\n\t\tunitProperties: unitProperties\n\t};\n};\n\n\n\n\n/**\n * Globalize.formatUnit( value, unit, options )\n *\n * @value [Number]\n *\n * @unit [String]: The unit (e.g \"second\", \"day\", \"year\")\n *\n * @options [Object]\n * - form: [String] \"long\", \"short\" (default), or \"narrow\".\n *\n * Format units such as seconds, minutes, days, weeks, etc.\n */\nGlobalize.formatUnit =\nGlobalize.prototype.formatUnit = function( value, unit, options ) {\n\tvalidateParameterPresence( value, \"value\" );\n\tvalidateParameterTypeNumber( value, \"value\" );\n\n\treturn this.unitFormatter( unit, options )( value );\n};\n\n/**\n * Globalize.unitFormatter( unit, options )\n *\n * @unit [String]: The unit (e.g \"second\", \"day\", \"year\")\n *\n * @options [Object]\n * - form: [String] \"long\", \"short\" (default), or \"narrow\".\n *\n * - numberFormatter: [Function] a number formatter function. Defaults to Globalize\n * `.numberFormatter()` for the current locale using the default options.\n */\nGlobalize.unitFormatter =\nGlobalize.prototype.unitFormatter = function( unit, options ) {\n\tvar args, form, numberFormatter, pluralGenerator, returnFn, properties;\n\n\tvalidateParameterPresence( unit, \"unit\" );\n\tvalidateParameterTypeString( unit, \"unit\" );\n\n\tvalidateParameterTypePlainObject( options, \"options\" );\n\n\toptions = options || {};\n\n\targs = [ unit, options ];\n\tform = options.form || \"long\";\n\tproperties = unitProperties( unit, form, this.cldr );\n\n\tnumberFormatter = options.numberFormatter || this.numberFormatter();\n\tpluralGenerator = this.pluralGenerator();\n\treturnFn = unitFormatterFn( numberFormatter, pluralGenerator, properties );\n\n\truntimeBind( args, this.cldr, returnFn, [ numberFormatter, pluralGenerator, properties ] );\n\n\treturn returnFn;\n};\n\nreturn Globalize;\n\n\n\n\n}));\n","/*!\n * Globalize v1.7.0\n *\n * https://github.com/globalizejs/globalize\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-08-02T11:53Z\n */\n\n// Core\nmodule.exports = require( \"./globalize\" );\n\n// Extent core with the following modules\nrequire( \"./globalize/message\" );\nrequire( \"./globalize/number\" );\nrequire( \"./globalize/plural\" );\n\n// Load after globalize/number\nrequire( \"./globalize/currency\" );\nrequire( \"./globalize/date\" );\n\n// Load after globalize/number and globalize/plural\nrequire( \"./globalize/relative-time\" );\nrequire( \"./globalize/unit\" );\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams | null\n) {\n let searchParams = createSearchParams(locationSearch);\n\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n\n return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | JsonValue\n | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\n\nexport interface SubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides ``.\n * Defaults to \"GET\".\n */\n method?: HTMLFormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides ``.\n * Defaults to the path of the current route.\n */\n action?: string;\n\n /**\n * The encoding used to submit the form. Overrides ``.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Indicate a specific fetcherKey to use when using navigate=false\n */\n fetcherKey?: string;\n\n /**\n * navigate=false will use a fetcher instead of a navigation\n */\n navigate?: boolean;\n\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * In browser-based environments, prevent resetting scroll after this\n * navigation when using the component\n */\n preventScrollReset?: boolean;\n\n /**\n * Enable flushSync for this navigation's state updates\n */\n unstable_flushSync?: boolean;\n\n /**\n * Enable view transitions on this submission navigation\n */\n unstable_viewTransition?: boolean;\n}\n\nconst supportedFormEncTypes: Set = new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`\\`/\\`\\` ` +\n `and will default to \"${defaultEncType}\"`\n );\n\n return null;\n }\n return encType;\n}\n\nexport function getFormSubmissionInfo(\n target: SubmitTarget,\n basename: string\n): {\n action: string | null;\n method: string;\n encType: string;\n formData: FormData | undefined;\n body: any;\n} {\n let method: string;\n let action: string | null;\n let encType: string;\n let formData: FormData | undefined;\n let body: any;\n\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n formData = new FormData(target);\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a