{"version":3,"file":"static/js/main.c7a2884d.js","mappings":"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","sources":["../node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../node_modules/@fortawesome/react-fontawesome/index.es.js","data/contact.js","components/Contact/ContactIcons.js","../node_modules/react-ga/dist/esm/utils/console/warn.js","../node_modules/react-ga/dist/esm/components/OutboundLink.js","../node_modules/react-ga/dist/esm/utils/redactEmail.js","../node_modules/react-ga/dist/esm/utils/trim.js","../node_modules/react-ga/dist/esm/utils/toTitleCase.js","../node_modules/react-ga/dist/esm/utils/format.js","../node_modules/react-ga/dist/esm/utils/mightBeEmail.js","../node_modules/react-ga/dist/esm/utils/loadGA.js","../node_modules/react-ga/dist/esm/utils/console/log.js","../node_modules/react-ga/dist/esm/utils/testModeAPI.js","../node_modules/react-ga/dist/esm/core.js","../node_modules/react-ga/dist/esm/utils/removeLeadingSlash.js","../node_modules/react-ga/dist/esm/index.js","components/Template/Analytics.js","data/routes.js","components/Template/Hamburger.js","components/Template/Navigation.js","components/Template/SideBar.js","components/Template/ScrollToTop.js","layouts/Main.js","../node_modules/@fortawesome/free-brands-svg-icons/faGithub.js","../node_modules/@fortawesome/free-brands-svg-icons/faLinkedinIn.js","../node_modules/@fortawesome/free-regular-svg-icons/faEnvelope.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/invariant/browser.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/react-helmet-async/lib/index.esm.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","App.js","index.js"],"sourcesContent":["/*!\n * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && _setPrototypeOf(t, e);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\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 _wrapRegExp() {\n _wrapRegExp = function (e, r) {\n return new BabelRegExp(e, void 0, r);\n };\n var e = RegExp.prototype,\n r = new WeakMap();\n function BabelRegExp(e, t, p) {\n var o = RegExp(e, t);\n return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype);\n }\n function buildGroups(e, t) {\n var p = r.get(t);\n return Object.keys(p).reduce(function (r, t) {\n var o = p[t];\n if (\"number\" == typeof o) r[t] = e[o];else {\n for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;\n r[t] = e[o[i]];\n }\n return r;\n }, Object.create(null));\n }\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {\n var t = e.exec.call(this, r);\n if (t) {\n t.groups = buildGroups(t, this);\n var p = t.indices;\n p && (p.groups = buildGroups(p, this));\n }\n return t;\n }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {\n if (\"string\" == typeof p) {\n var o = r.get(this);\n return e[Symbol.replace].call(this, t, p.replace(/\\$<([^>]+)>/g, function (e, r) {\n var t = o[r];\n return \"$\" + (Array.isArray(t) ? t.join(\"$\") : t);\n }));\n }\n if (\"function\" == typeof p) {\n var i = this;\n return e[Symbol.replace].call(this, t, function () {\n var e = arguments;\n return \"object\" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);\n });\n }\n return e[Symbol.replace].call(this, t, p);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nconst noop = () => {};\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\nconst {\n userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar p = /fa(s|r|l|t|d|dr|dl|dt|b|k|kd|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\\-\\ ]/,\n g = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar S = {\n classic: {\n fa: \"solid\",\n fas: \"solid\",\n \"fa-solid\": \"solid\",\n far: \"regular\",\n \"fa-regular\": \"regular\",\n fal: \"light\",\n \"fa-light\": \"light\",\n fat: \"thin\",\n \"fa-thin\": \"thin\",\n fab: \"brands\",\n \"fa-brands\": \"brands\"\n },\n duotone: {\n fa: \"solid\",\n fad: \"solid\",\n \"fa-solid\": \"solid\",\n \"fa-duotone\": \"solid\",\n fadr: \"regular\",\n \"fa-regular\": \"regular\",\n fadl: \"light\",\n \"fa-light\": \"light\",\n fadt: \"thin\",\n \"fa-thin\": \"thin\"\n },\n sharp: {\n fa: \"solid\",\n fass: \"solid\",\n \"fa-solid\": \"solid\",\n fasr: \"regular\",\n \"fa-regular\": \"regular\",\n fasl: \"light\",\n \"fa-light\": \"light\",\n fast: \"thin\",\n \"fa-thin\": \"thin\"\n },\n \"sharp-duotone\": {\n fa: \"solid\",\n fasds: \"solid\",\n \"fa-solid\": \"solid\",\n fasdr: \"regular\",\n \"fa-regular\": \"regular\",\n fasdl: \"light\",\n \"fa-light\": \"light\",\n fasdt: \"thin\",\n \"fa-thin\": \"thin\"\n }\n },\n A = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n },\n P = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar s = \"classic\",\n t = \"duotone\",\n r = \"sharp\",\n o = \"sharp-duotone\",\n L = [s, t, r, o];\nvar G = {\n classic: {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n duotone: {\n 900: \"fad\",\n 400: \"fadr\",\n 300: \"fadl\",\n 100: \"fadt\"\n },\n sharp: {\n 900: \"fass\",\n 400: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"sharp-duotone\": {\n 900: \"fasds\",\n 400: \"fasdr\",\n 300: \"fasdl\",\n 100: \"fasdt\"\n }\n };\nvar lt = {\n \"Font Awesome 6 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 6 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n \"Font Awesome 6 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 6 Duotone\": {\n 900: \"fad\",\n 400: \"fadr\",\n normal: \"fadr\",\n 300: \"fadl\",\n 100: \"fadt\"\n },\n \"Font Awesome 6 Sharp\": {\n 900: \"fass\",\n 400: \"fasr\",\n normal: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"Font Awesome 6 Sharp Duotone\": {\n 900: \"fasds\",\n 400: \"fasdr\",\n normal: \"fasdr\",\n 300: \"fasdl\",\n 100: \"fasdt\"\n }\n };\nvar pt = new Map([[\"classic\", {\n defaultShortPrefixId: \"fas\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\", \"brands\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"sharp\", {\n defaultShortPrefixId: \"fass\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"duotone\", {\n defaultShortPrefixId: \"fad\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"sharp-duotone\", {\n defaultShortPrefixId: \"fasds\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }]]),\n xt = {\n classic: {\n solid: \"fas\",\n regular: \"far\",\n light: \"fal\",\n thin: \"fat\",\n brands: \"fab\"\n },\n duotone: {\n solid: \"fad\",\n regular: \"fadr\",\n light: \"fadl\",\n thin: \"fadt\"\n },\n sharp: {\n solid: \"fass\",\n regular: \"fasr\",\n light: \"fasl\",\n thin: \"fast\"\n },\n \"sharp-duotone\": {\n solid: \"fasds\",\n regular: \"fasdr\",\n light: \"fasdl\",\n thin: \"fasdt\"\n }\n };\nvar Ft = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"],\n St = {\n kit: {\n fak: \"kit\",\n \"fa-kit\": \"kit\"\n },\n \"kit-duotone\": {\n fakd: \"kit-duotone\",\n \"fa-kit-duotone\": \"kit-duotone\"\n }\n },\n At = [\"kit\"];\nvar Ct = {\n kit: {\n \"fa-kit\": \"fak\"\n },\n \"kit-duotone\": {\n \"fa-kit-duotone\": \"fakd\"\n }\n};\nvar Lt = [\"fak\", \"fakd\"],\n Wt = {\n kit: {\n fak: \"fa-kit\"\n },\n \"kit-duotone\": {\n fakd: \"fa-kit-duotone\"\n }\n };\nvar Et = {\n kit: {\n kit: \"fak\"\n },\n \"kit-duotone\": {\n \"kit-duotone\": \"fakd\"\n }\n };\n\nvar t$1 = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n },\n r$1 = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar bt$1 = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"];\nvar Yt = {\n \"Font Awesome Kit\": {\n 400: \"fak\",\n normal: \"fak\"\n },\n \"Font Awesome Kit Duotone\": {\n 400: \"fakd\",\n normal: \"fakd\"\n }\n };\nvar ua = {\n classic: {\n \"fa-brands\": \"fab\",\n \"fa-duotone\": \"fad\",\n \"fa-light\": \"fal\",\n \"fa-regular\": \"far\",\n \"fa-solid\": \"fas\",\n \"fa-thin\": \"fat\"\n },\n duotone: {\n \"fa-regular\": \"fadr\",\n \"fa-light\": \"fadl\",\n \"fa-thin\": \"fadt\"\n },\n sharp: {\n \"fa-solid\": \"fass\",\n \"fa-regular\": \"fasr\",\n \"fa-light\": \"fasl\",\n \"fa-thin\": \"fast\"\n },\n \"sharp-duotone\": {\n \"fa-solid\": \"fasds\",\n \"fa-regular\": \"fasdr\",\n \"fa-light\": \"fasdl\",\n \"fa-thin\": \"fasdt\"\n }\n },\n I$1 = {\n classic: [\"fas\", \"far\", \"fal\", \"fat\", \"fad\"],\n duotone: [\"fadr\", \"fadl\", \"fadt\"],\n sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n \"sharp-duotone\": [\"fasds\", \"fasdr\", \"fasdl\", \"fasdt\"]\n },\n ga = {\n classic: {\n fab: \"fa-brands\",\n fad: \"fa-duotone\",\n fal: \"fa-light\",\n far: \"fa-regular\",\n fas: \"fa-solid\",\n fat: \"fa-thin\"\n },\n duotone: {\n fadr: \"fa-regular\",\n fadl: \"fa-light\",\n fadt: \"fa-thin\"\n },\n sharp: {\n fass: \"fa-solid\",\n fasr: \"fa-regular\",\n fasl: \"fa-light\",\n fast: \"fa-thin\"\n },\n \"sharp-duotone\": {\n fasds: \"fa-solid\",\n fasdr: \"fa-regular\",\n fasdl: \"fa-light\",\n fasdt: \"fa-thin\"\n }\n },\n x = [\"fa-solid\", \"fa-regular\", \"fa-light\", \"fa-thin\", \"fa-duotone\", \"fa-brands\"],\n Ia = [\"fa\", \"fas\", \"far\", \"fal\", \"fat\", \"fad\", \"fadr\", \"fadl\", \"fadt\", \"fab\", \"fass\", \"fasr\", \"fasl\", \"fast\", \"fasds\", \"fasdr\", \"fasdl\", \"fasdt\", ...r$1, ...x],\n m$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n c$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n F$1 = c$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n ma = [...Object.keys(I$1), ...m$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(c$1.map(a => \"\".concat(a, \"x\"))).concat(F$1.map(a => \"w-\".concat(a)));\nvar wa = {\n \"Font Awesome 5 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 5 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\"\n },\n \"Font Awesome 5 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 5 Duotone\": {\n 900: \"fad\"\n }\n };\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e$$1) {\n return false;\n }\n})();\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get(target, prop) {\n return prop in target ? target[prop] : target[s];\n }\n });\n}\nconst _PREFIX_TO_STYLE = _objectSpread2({}, S);\n\n// We changed FACSSClassesToStyleId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles. But we do still need duotone in _PREFIX_TO_STYLE below, so we are manually adding\n// {'fa-duotone': 'duotone'}\n_PREFIX_TO_STYLE[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n 'fa-duotone': 'duotone'\n}), S[s]), St['kit']), St['kit-duotone']);\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = _objectSpread2({}, xt);\n\n// We changed FAStyleIdToShortPrefixId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles. But we do still need duotone in _STYLE_TO_PREFIX below, so we are manually adding {duotone: 'fad'}\n_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n duotone: 'fad'\n}), _STYLE_TO_PREFIX[s]), Et['kit']), Et['kit-duotone']);\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = _objectSpread2({}, ga);\n_PREFIX_TO_LONG_STYLE[s] = _objectSpread2(_objectSpread2({}, _PREFIX_TO_LONG_STYLE[s]), Wt['kit']);\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = _objectSpread2({}, ua);\n_LONG_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2({}, _LONG_STYLE_TO_PREFIX[s]), Ct['kit']);\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = p; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = g;\nconst _FONT_WEIGHT_TO_PREFIX = _objectSpread2({}, G);\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = A;\nconst RESERVED_CLASSES = [...At, ...ma];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n if (element) {\n return element.getAttribute(attr);\n }\n}\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(_ref => {\n let [attr, key] = _ref;\n const val = coerce(getAttrConfig(attr));\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\nconst _default = {\n styleDefault: 'solid',\n familyDefault: s,\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\n// familyPrefix is deprecated but we must still support it if present\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\nconst _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function (val) {\n _config[key] = val;\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config[key];\n }\n });\n});\n\n// familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function (val) {\n _config.cssPrefix = val;\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n return () => {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n const style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n const headChildren = DOCUMENT.head.childNodes;\n let beforeChild = null;\n for (let i = headChildren.length - 1; i > -1; i--) {\n const child = headChildren[i];\n const tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n let size = 12;\n let id = '';\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n return id;\n}\nfunction toArray(obj) {\n const array = [];\n for (let i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(i => i);\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce((acc, styleName) => {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n let {\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer,\n inner,\n path\n };\n}\nfunction transformForCss(_ref2) {\n let {\n transform,\n width = UNITS_IN_GRID,\n height = UNITS_IN_GRID,\n startCentered = false\n } = _ref2;\n let val = '';\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n }\n val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-counter-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(-1 * var(--fa-li-width, 2em));\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n animation-name: fa-beat;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n animation-name: fa-bounce;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n animation-name: fa-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n animation-name: fa-beat-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n animation-name: fa-flip;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n animation-name: fa-shake;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n animation-name: fa-spin;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 2s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n animation-name: fa-spin;\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n animation-delay: -1ms;\\n animation-duration: 1ms;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n transform: scale(1);\\n }\\n 45% {\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n transform: rotate(-15deg);\\n }\\n 4% {\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n transform: rotate(18deg);\\n }\\n 16% {\\n transform: rotate(-22deg);\\n }\\n 20% {\\n transform: rotate(22deg);\\n }\\n 32% {\\n transform: rotate(-12deg);\\n }\\n 36% {\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\";\n\nfunction css() {\n const dcp = DEFAULT_CSS_PREFIX;\n const drc = DEFAULT_REPLACEMENT_CLASS;\n const fp = config.cssPrefix;\n const rc = config.replacementClass;\n let s = baseStyles;\n if (fp !== dcp || rc !== drc) {\n const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n return s;\n}\nlet _cssInserted = false;\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\nvar InjectCSS = {\n mixout() {\n return {\n dom: {\n css,\n insertCss: ensureCss\n }\n };\n },\n hooks() {\n return {\n beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nconst w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nconst functions = [];\nconst listener = function () {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(fn => fn());\n};\nlet loaded = false;\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n const {\n tag,\n attributes = {},\n children = []\n } = abstractNodes;\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix,\n iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n const extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\nfunction toHex(unicode) {\n const decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n const size = string.length;\n let first = string.charCodeAt(index);\n let second;\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce((acc, iconName) => {\n const icon = icons[iconName];\n const expanded = !!icon.icon;\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n}\nfunction defineIcons(prefix, icons) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n skipHooks = false\n } = params;\n const normalized = normalizeIcons(icons);\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nconst duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*path d=\"([^\"]+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\".*path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nconst {\n styles,\n shims\n} = namespace;\nconst FAMILY_NAMES = Object.keys(PREFIX_TO_LONG_STYLE);\nconst PREFIXES_FOR_FAMILY = FAMILY_NAMES.reduce((acc, familyId) => {\n acc[familyId] = Object.keys(PREFIX_TO_LONG_STYLE[familyId]);\n return acc;\n}, {});\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n const parts = cls.split('-');\n const prefix = parts[0];\n const iconName = parts.slice(1).join('-');\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nconst build = () => {\n const lookup = reducer => {\n return reduce(styles, (o$$1, style, prefix) => {\n o$$1[prefix] = reduce(style, reducer, {});\n return o$$1;\n }, {});\n };\n _byUnicode = lookup((acc, icon, iconName) => {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'number';\n });\n aliases.forEach(alias => {\n acc[alias.toString(16)] = iconName;\n });\n }\n return acc;\n });\n _byLigature = lookup((acc, icon, iconName) => {\n acc[iconName] = iconName;\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'string';\n });\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n }\n return acc;\n });\n _byAlias = lookup((acc, icon, iconName) => {\n const aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n return acc;\n });\n\n // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n const hasRegular = 'far' in styles || config.autoFetchSvg;\n const shimLookups = reduce(shims, (acc, shim) => {\n const maybeNameMaybeUnicode = shim[0];\n let prefix = shim[1];\n const iconName = shim[2];\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix,\n iconName\n };\n }\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix,\n iconName\n };\n }\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(c$$1 => {\n _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n const oldUnicode = _byOldUnicode[unicode];\n const newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getFamilyId(values) {\n let family = s;\n const famProps = FAMILY_NAMES.reduce((acc, familyId) => {\n acc[familyId] = \"\".concat(config.cssPrefix, \"-\").concat(familyId);\n return acc;\n }, {});\n L.forEach(familyId => {\n if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n family = familyId;\n }\n });\n return family;\n}\nfunction getCanonicalPrefix(styleOrPrefix) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n family = s\n } = params;\n const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n\n // handles the exception of passing in only a family of 'duotone' with no style\n if (family === t && !styleOrPrefix) {\n return 'fad';\n }\n const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n const result = prefix || defined || null;\n return result;\n}\nfunction moveNonFaClassesToRest(classNames) {\n let rest = [];\n let iconName = null;\n classNames.forEach(cls => {\n const result = getIconName(config.cssPrefix, cls);\n if (result) {\n iconName = result;\n } else if (cls) {\n rest.push(cls);\n }\n });\n return {\n iconName,\n rest\n };\n}\nfunction sortedUniqueValues(arr) {\n return arr.sort().filter((value, index, arr) => {\n return arr.indexOf(value) === index;\n });\n}\nfunction getCanonicalIcon(values) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n skipLookups = false\n } = params;\n let givenPrefix = null;\n const faCombinedClasses = Ia.concat(bt$1);\n const faStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => faCombinedClasses.includes(cls)));\n const nonStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => !Ia.includes(cls)));\n const faStyles = faStyleOrFamilyClasses.filter(cls => {\n givenPrefix = cls;\n return !P.includes(cls);\n });\n const [styleFromValues = null] = faStyles;\n const family = getFamilyId(faStyleOrFamilyClasses);\n const canonical = _objectSpread2(_objectSpread2({}, moveNonFaClassesToRest(nonStyleOrFamilyClasses)), {}, {\n prefix: getCanonicalPrefix(styleFromValues, {\n family\n })\n });\n return _objectSpread2(_objectSpread2(_objectSpread2({}, canonical), getDefaultCanonicalPrefix({\n values,\n family,\n styles,\n config,\n canonical,\n givenPrefix\n })), applyShimAndAlias(skipLookups, givenPrefix, canonical));\n}\nfunction applyShimAndAlias(skipLookups, givenPrefix, canonical) {\n let {\n prefix,\n iconName\n } = canonical;\n if (skipLookups || !prefix || !iconName) {\n return {\n prefix,\n iconName\n };\n }\n const shim = givenPrefix === 'fa' ? byOldName(iconName) : {};\n const aliasIconName = byAlias(prefix, iconName);\n iconName = shim.iconName || aliasIconName || iconName;\n prefix = shim.prefix || prefix;\n if (prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n prefix = 'fas';\n }\n return {\n prefix,\n iconName\n };\n}\nconst newCanonicalFamilies = L.filter(familyId => {\n return familyId !== s || familyId !== t;\n});\nconst newCanonicalStyles = Object.keys(ga).filter(key => key !== s).map(key => Object.keys(ga[key])).flat();\nfunction getDefaultCanonicalPrefix(prefixOptions) {\n const {\n values,\n family,\n canonical,\n givenPrefix = '',\n styles = {},\n config: config$$1 = {}\n } = prefixOptions;\n const isDuotoneFamily = family === t;\n const valuesHasDuotone = values.includes('fa-duotone') || values.includes('fad');\n const defaultFamilyIsDuotone = config$$1.familyDefault === 'duotone';\n const canonicalPrefixIsDuotone = canonical.prefix === 'fad' || canonical.prefix === 'fa-duotone';\n if (!isDuotoneFamily && (valuesHasDuotone || defaultFamilyIsDuotone || canonicalPrefixIsDuotone)) {\n canonical.prefix = 'fad';\n }\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n if (!canonical.prefix && newCanonicalFamilies.includes(family)) {\n const validPrefix = Object.keys(styles).find(key => newCanonicalStyles.includes(key));\n if (validPrefix || config$$1.autoFetchSvg) {\n const defaultPrefix = pt.get(family).defaultShortPrefixId;\n canonical.prefix = defaultPrefix;\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n }\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n return canonical;\n}\n\nclass Library {\n constructor() {\n this.definitions = {};\n }\n add() {\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n const additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(key => {\n this.definitions[key] = _objectSpread2(_objectSpread2({}, this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]);\n\n // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n const longPrefix = PREFIX_TO_LONG_STYLE[s][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n reset() {\n this.definitions = {};\n }\n _pullDefinitions(additions, definition) {\n const normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(key => {\n const {\n prefix,\n iconName,\n icon\n } = normalized[key];\n const aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n if (aliases.length > 0) {\n aliases.forEach(alias => {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n let {\n mixoutsTo: obj\n } = _ref;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(k => {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n _plugins.forEach(plugin => {\n const mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(tk => {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n if (typeof mixout[tk] === 'object') {\n Object.keys(mixout[tk]).forEach(sk => {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n if (plugin.hooks) {\n const hooks = plugin.hooks();\n Object.keys(hooks).forEach(hook => {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n _hooks[hook].push(hooks[hook]);\n });\n }\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n const hook = arguments[0];\n const args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n let {\n iconName\n } = iconLookup;\n const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nconst dom = {\n i2svg: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n }\n },\n watch: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot\n } = params;\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n config.observeMutations = true;\n domready(() => {\n autoReplace({\n autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nconst parse = {\n icon: icon => {\n if (icon === null) {\n return null;\n }\n if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n return {\n prefix: icon.prefix,\n iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n };\n }\n if (Array.isArray(icon) && icon.length === 2) {\n const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n const prefix = getCanonicalPrefix(icon[0]);\n return {\n prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n if (typeof icon === 'string') {\n const prefix = getDefaultUsablePrefix();\n return {\n prefix,\n iconName: byAlias(prefix, icon) || icon\n };\n }\n }\n};\nconst api = {\n noAuto,\n config,\n dom,\n parse,\n library,\n findIconDefinition,\n toHtml\n};\nconst autoReplace = function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot = DOCUMENT\n } = params;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function () {\n return val.abstract.map(a => toHtml(a));\n }\n });\n Object.defineProperty(val, 'node', {\n get: function () {\n if (!IS_DOM) return;\n const container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n let {\n children,\n main,\n mask,\n attributes,\n styles,\n transform\n } = _ref;\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n const {\n width,\n height\n } = main;\n const offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n return [{\n tag: 'svg',\n attributes,\n children\n }];\n}\n\nfunction asSymbol (_ref) {\n let {\n prefix,\n iconName,\n children,\n attributes,\n symbol\n } = _ref;\n const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id\n }),\n children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n const {\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n title,\n maskId,\n titleId,\n extra,\n watchable = false\n } = params;\n const {\n width,\n height\n } = mask.found ? mask : main;\n const isUploadedIcon = Lt.includes(prefix);\n const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c$$1 => extra.classes.indexOf(c$$1) === -1).filter(c$$1 => c$$1 !== '' || !!c$$1).concat(extra.classes).join(' ');\n let content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n const args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix,\n iconName,\n main,\n mask,\n maskId,\n transform,\n symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n const {\n children,\n attributes\n } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n };\n args.children = children;\n args.attributes = attributes;\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n const {\n content,\n width,\n height,\n transform,\n title,\n extra,\n watchable = false\n } = params;\n const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n const styles = _objectSpread2({}, extra.styles);\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform,\n startCentered: true,\n width,\n height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n const styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n const {\n content,\n title,\n extra\n } = params;\n const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n const styleString = joinStyles(extra.styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\n\nconst {\n styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n const width = icon[0];\n const height = icon[1];\n const [vectorData] = icon.slice(4);\n let element = null;\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n return {\n found: true,\n width,\n height,\n icon: element\n };\n}\nconst missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\nfunction findIcon(iconName, prefix) {\n let givenPrefix = prefix;\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n return new Promise((resolve, reject) => {\n if (givenPrefix === 'fa') {\n const shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n const icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nconst noop$1 = () => {};\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nconst preamble = \"FA \\\"6.7.2\\\"\";\nconst begin = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return () => end(name);\n};\nconst end = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n begin,\n end\n};\n\nconst noop$2 = () => {};\nfunction isWatched(node) {\n const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n const mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n } = params;\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n const tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n const children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn\n }));\n });\n return tag;\n}\nfunction nodeAsComment(node) {\n let comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n return comment;\n}\nconst mutators = {\n replace: function (mutation) {\n const node = mutation[0];\n if (node.parentNode) {\n mutation[1].forEach(abstract => {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n let comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function (mutation) {\n const node = mutation[0];\n const abstract = mutation[1];\n\n // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n if (abstract[0].attributes.class) {\n const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\nfunction performOperationSync(op) {\n op();\n}\nfunction perform(mutations, callback) {\n const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n let frame = performOperationSync;\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n frame(() => {\n const mutator = getMutator();\n const mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nlet disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nlet mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n if (!config.observeMutations) {\n return;\n }\n const {\n treeCallback = noop$2,\n nodeCallback = noop$2,\n pseudoElementsCallback = noop$2,\n observeMutationsRoot = DOCUMENT\n } = options;\n mo = new MUTATION_OBSERVER(objects => {\n if (disabled) return;\n const defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(mutationRecord => {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n treeCallback(mutationRecord.target);\n }\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n const {\n prefix,\n iconName\n } = getCanonicalIcon(classArray(mutationRecord.target));\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n const style = node.getAttribute('style');\n let val = [];\n if (style) {\n val = style.split(';').reduce((acc, style) => {\n const styles = style.split(':');\n const prop = styles[0];\n const value = styles.slice(1);\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n return acc;\n }, {});\n }\n return val;\n}\n\nfunction classParser (node) {\n const existingPrefix = node.getAttribute('data-prefix');\n const existingIconName = node.getAttribute('data-icon');\n const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n let val = getCanonicalIcon(classArray(node));\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n if (val.iconName && val.prefix) {\n return val;\n }\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n return val;\n}\n\nfunction attributesParser (node) {\n const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n const title = node.getAttribute('title');\n const titleId = node.getAttribute('data-fa-title-id');\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n const {\n iconName,\n prefix,\n rest: extraClasses\n } = classParser(node);\n const extraAttributes = attributesParser(node);\n const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n let extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nconst {\n styles: styles$2\n} = namespace;\nfunction generateMutation(node) {\n const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\nfunction getKnownPrefixes() {\n return [...Ft, ...Ia];\n}\nfunction onTree(root) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n const htmlClassList = DOCUMENT.documentElement.classList;\n const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n const prefixes = config.autoFetchSvg ? getKnownPrefixes() : P.concat(Object.keys(styles$2));\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n let candidates = [];\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e$$1) {\n // noop\n }\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n const mark = perf.begin('onTree');\n const mutations = candidates.reduce((acc, node) => {\n try {\n const mutation = generateMutation(node);\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e$$1) {\n if (!PRODUCTION) {\n if (e$$1.name === 'MissingIcon') {\n console.error(e$$1);\n }\n }\n }\n return acc;\n }, []);\n return new Promise((resolve, reject) => {\n Promise.all(mutations).then(resolvedMutations => {\n perform(resolvedMutations, () => {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(e$$1 => {\n mark();\n reject(e$$1);\n });\n });\n}\nfunction onNode(node) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(mutation => {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n let {\n mask\n } = params;\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask\n }));\n };\n}\nconst render = function (iconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n symbol = false,\n mask = null,\n maskId = null,\n title = null,\n titleId = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n if (!iconDefinition) return;\n const {\n prefix,\n iconName,\n icon\n } = iconDefinition;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), () => {\n callHooks('beforeDOMElementCreation', {\n iconDefinition,\n params\n });\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix,\n iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol,\n title,\n maskId,\n titleId,\n extra: {\n attributes,\n styles,\n classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n const {\n node = DOCUMENT,\n callback = () => {}\n } = params;\n return onTree(node, callback);\n };\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n const {\n iconName,\n title,\n titleId,\n prefix,\n transform,\n symbol,\n mask,\n maskId,\n extra\n } = nodeMeta;\n return new Promise((resolve, reject) => {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(_ref => {\n let [main, mask] = _ref;\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n maskId,\n title,\n titleId,\n extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n providers$$1.generateAbstractIcon = function (_ref2) {\n let {\n children,\n attributes,\n main,\n transform,\n styles\n } = _ref2;\n const styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n let nextChild;\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main,\n transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n children.push(nextChild || main.icon);\n return {\n children,\n attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout() {\n return {\n layer(assembler) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n classes = []\n } = params;\n return domVariants({\n type: 'layer'\n }, () => {\n callHooks('beforeDOMElementCreation', {\n assembler,\n params\n });\n let children = [];\n assembler(args => {\n Array.isArray(args) ? args.map(a => {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\"), ...classes].join(' ')\n },\n children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout() {\n return {\n counter(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'counter',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout() {\n return {\n text(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'text',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersTextAbstract({\n content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n }\n });\n });\n }\n };\n },\n provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n const {\n title,\n transform,\n extra\n } = nodeMeta;\n let width = null;\n let height = null;\n if (IS_IE) {\n const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n const boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width,\n height,\n transform,\n title,\n extra,\n watchable: true\n })]);\n };\n }\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n FontAwesome: {\n normal: 'fas',\n 400: 'fas'\n }\n}), lt), wa), Yt);\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n return acc;\n}, {});\nfunction hexValueFromContent(content) {\n const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n const codePoint = codePointAt(cleaned, 0);\n const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n const fontWeightInteger = parseInt(fontWeight);\n const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\nfunction replaceForPosition(node, position) {\n const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise((resolve, reject) => {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n const children = toArray(node.children);\n const alreadyProcessedPseudoElement = children.filter(c$$1 => c$$1.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n const styles = WINDOW.getComputedStyle(node, position);\n const fontFamily = styles.getPropertyValue('font-family');\n const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n const fontWeight = styles.getPropertyValue('font-weight');\n const content = styles.getPropertyValue('content');\n if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n const content = styles.getPropertyValue('content');\n let prefix = getPrefix(fontFamily, fontWeight);\n const {\n value: hexValue,\n isSecondary\n } = hexValueFromContent(content);\n const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n let iconName = byUnicode(prefix, hexValue);\n let iconIdentifier = iconName;\n if (isV4) {\n const iconName4 = byOldUnicode(hexValue);\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n }\n\n // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n const meta = blankMeta();\n const {\n extra\n } = meta;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(main => {\n const abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main,\n mask: emptyCanonicalIcon()\n },\n prefix,\n iconName: iconIdentifier,\n extra,\n watchable: true\n }));\n const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n element.outerHTML = abstract.map(a$$1 => toHtml(a$$1)).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise((resolve, reject) => {\n const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n const end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(() => {\n end();\n enableObservation();\n resolve();\n }).catch(() => {\n end();\n enableObservation();\n reject();\n });\n });\n}\nvar PseudoElements = {\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.pseudoElements2svg = function (params) {\n const {\n node = DOCUMENT\n } = params;\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n mixout() {\n return {\n dom: {\n unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks() {\n return {\n bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto() {\n disconnect();\n },\n watch(params) {\n const {\n observeMutationsRoot\n } = params;\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nconst parseTransformString = transformString => {\n let transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n const parts = n.toLowerCase().split('-');\n const first = parts[0];\n let rest = parts.slice(1).join('-');\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n rest = parseFloat(rest);\n if (isNaN(rest)) {\n return acc;\n }\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout() {\n return {\n parse: {\n transform: transformString => {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const transformString = node.getAttribute('data-fa-transform');\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n let {\n main,\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n const operations = {\n outer,\n inner,\n path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nconst ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\nfunction fillBlack(abstract) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n return abstract;\n}\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\nvar Masks = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const maskData = node.getAttribute('data-fa-mask');\n const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n let {\n children,\n attributes,\n main,\n mask,\n maskId: explicitMaskId,\n transform\n } = _ref;\n const {\n width: mainWidth,\n icon: mainPath\n } = main;\n const {\n width: maskWidth,\n icon: maskPath\n } = mask;\n const trans = transformForSvg({\n transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n const maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n const maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n const maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n const maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n const maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n const defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children,\n attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides(providers) {\n let reduceMotion = false;\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n providers.missingIconAbstract = function () {\n const gChildren = [];\n const FILL = {\n fill: 'currentColor'\n };\n const ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n };\n\n // Ring\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n const OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n const dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const symbolData = node.getAttribute('data-fa-symbol');\n const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\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\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\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}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var allProps = _objectSpread2(_objectSpread2({}, defaultProps), props);\n\n var iconArgs = allProps.icon,\n maskArgs = allProps.mask,\n symbol = allProps.symbol,\n className = allProps.className,\n title = allProps.title,\n titleId = allProps.titleId,\n maskId = allProps.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(allProps)), _toConsumableArray((className || '').split(' '))));\n var transform = objectWithKey('transform', typeof allProps.transform === 'string' ? parse.transform(allProps.transform) : allProps.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(allProps).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!defaultProps.hasOwnProperty(key)) {\n extraProps[key] = allProps[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","import { faGithub } from '@fortawesome/free-brands-svg-icons/faGithub';\nimport { faLinkedinIn } from '@fortawesome/free-brands-svg-icons/faLinkedinIn';\nimport { faEnvelope } from '@fortawesome/free-regular-svg-icons/faEnvelope';\n// See https://fontawesome.com/icons?d=gallery&s=brands,regular&m=free\n// to add other icons.\n\nconst data = [\n {\n link: 'https://github.com/eaponiente',\n label: 'Github',\n icon: faGithub,\n },\n {\n link: 'https://www.linkedin.com/in/edgar-allan-poniente-242b33a8/',\n label: 'LinkedIn',\n icon: faLinkedinIn,\n },\n {\n link: 'mailto:edgar.poniente@gmail.com',\n label: 'Email',\n icon: faEnvelope,\n },\n];\n\nexport default data;\n","import React from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport data from '../../data/contact';\n\nconst ContactIcons = () => (\n \n);\n\nexport default ContactIcons;\n","export default function warn(s) {\n console.warn('[react-ga]', s);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar _excluded = [\"to\", \"target\"];\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\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport warn from '../utils/console/warn';\nvar NEWTAB = '_blank';\nvar MIDDLECLICK = 1;\n\nvar OutboundLink = /*#__PURE__*/function (_Component) {\n _inherits(OutboundLink, _Component);\n\n var _super = _createSuper(OutboundLink);\n\n function OutboundLink() {\n var _this;\n\n _classCallCheck(this, OutboundLink);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"handleClick\", function (event) {\n var _this$props = _this.props,\n target = _this$props.target,\n eventLabel = _this$props.eventLabel,\n to = _this$props.to,\n onClick = _this$props.onClick,\n trackerNames = _this$props.trackerNames;\n var eventMeta = {\n label: eventLabel\n };\n var sameTarget = target !== NEWTAB;\n var normalClick = !(event.ctrlKey || event.shiftKey || event.metaKey || event.button === MIDDLECLICK);\n\n if (sameTarget && normalClick) {\n event.preventDefault();\n OutboundLink.trackLink(eventMeta, function () {\n window.location.href = to;\n }, trackerNames);\n } else {\n OutboundLink.trackLink(eventMeta, function () {}, trackerNames);\n }\n\n if (onClick) {\n onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(OutboundLink, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n href = _this$props2.to,\n target = _this$props2.target,\n oldProps = _objectWithoutProperties(_this$props2, _excluded);\n\n var props = _objectSpread(_objectSpread({}, oldProps), {}, {\n target: target,\n href: href,\n onClick: this.handleClick\n });\n\n if (target === NEWTAB) {\n props.rel = \"\".concat(props.rel ? props.rel : '', \" noopener noreferrer\").trim();\n }\n\n delete props.eventLabel;\n delete props.trackerNames;\n return /*#__PURE__*/React.createElement('a', props);\n }\n }]);\n\n return OutboundLink;\n}(Component);\n\n_defineProperty(OutboundLink, \"trackLink\", function () {\n warn('ga tracking not enabled');\n});\n\nexport { OutboundLink as default };\nOutboundLink.propTypes = {\n eventLabel: PropTypes.string.isRequired,\n target: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n trackerNames: PropTypes.arrayOf(PropTypes.string)\n};\nOutboundLink.defaultProps = {\n target: null,\n to: null,\n onClick: null,\n trackerNames: null\n};","import warn from './console/warn';\nimport mightBeEmail from './mightBeEmail';\nvar redacted = 'REDACTED (Potential Email Address)';\nexport default function redactEmail(string) {\n if (mightBeEmail(string)) {\n warn('This arg looks like an email address, redacting.');\n return redacted;\n }\n\n return string;\n}","// GA strings need to have leading/trailing whitespace trimmed, and not all\n// browsers have String.prototoype.trim().\nexport default function trim(s) {\n return s && s.toString().replace(/^\\s+|\\s+$/g, '');\n}","/**\n * To Title Case 2.1 - http://individed.com/code/to-title-case/\n * Copyright 2008-2013 David Gouch. Licensed under the MIT License.\n * https://github.com/gouch/to-title-case\n */\nimport trim from './trim';\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i; // test\n\nexport default function toTitleCase(string) {\n return trim(string).replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' && (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}","import redactEmail from './redactEmail';\nimport toTitleCase from './toTitleCase';\nexport default function format() {\n var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var titleCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var redactingEmail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _str = s || '';\n\n if (titleCase) {\n _str = toTitleCase(s);\n }\n\n if (redactingEmail) {\n _str = redactEmail(_str);\n }\n\n return _str;\n}","// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nexport default function mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return typeof s === 'string' && s.indexOf('@') !== -1;\n}","var isLoaded = false;\nexport default function (options) {\n if (isLoaded) return;\n isLoaded = true;\n var gaAddress = 'https://www.google-analytics.com/analytics.js';\n\n if (options && options.gaAddress) {\n gaAddress = options.gaAddress;\n } else if (options && options.debug) {\n gaAddress = 'https://www.google-analytics.com/analytics_debug.js';\n }\n\n var onerror = options && options.onerror; // https://developers.google.com/analytics/devguides/collection/analyticsjs/\n\n /* eslint-disable */\n\n (function (i, s, o, g, r, a, m) {\n i['GoogleAnalyticsObject'] = r;\n i[r] = i[r] || function () {\n (i[r].q = i[r].q || []).push(arguments);\n }, i[r].l = 1 * new Date();\n a = s.createElement(o), m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n a.onerror = onerror;\n m.parentNode.insertBefore(a, m);\n })(window, document, 'script', gaAddress, 'ga');\n /* eslint-enable */\n\n}","export default function log(s) {\n console.info('[react-ga]', s);\n}","export var gaCalls = [];\nexport default {\n calls: gaCalls,\n ga: function ga() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n gaCalls.push([].concat(args));\n },\n resetCalls: function resetCalls() {\n gaCalls.length = 0;\n }\n};","var _excluded = [\"category\", \"action\", \"label\", \"value\", \"nonInteraction\", \"transport\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * React Google Analytics Module\n *\n * @package react-ga\n * @author Adam Lofting \n * Atul Varma \n */\n\n/**\n * Utilities\n */\nimport format from './utils/format';\nimport removeLeadingSlash from './utils/removeLeadingSlash';\nimport trim from './utils/trim';\nimport loadGA from './utils/loadGA';\nimport warn from './utils/console/warn';\nimport log from './utils/console/log';\nimport TestModeAPI from './utils/testModeAPI';\n\nvar _isNotBrowser = typeof window === 'undefined' || typeof document === 'undefined';\n\nvar _debug = false;\nvar _titleCase = true;\nvar _testMode = false;\nvar _alwaysSendToDefaultTracker = true;\nvar _redactEmail = true;\n\nvar internalGa = function internalGa() {\n var _window;\n\n if (_testMode) return TestModeAPI.ga.apply(TestModeAPI, arguments);\n if (_isNotBrowser) return false;\n if (!window.ga) return warn('ReactGA.initialize must be called first or GoogleAnalytics should be loaded manually');\n return (_window = window).ga.apply(_window, arguments);\n};\n\nfunction _format(s) {\n return format(s, _titleCase, _redactEmail);\n}\n\nfunction _gaCommand(trackerNames) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var command = args[0];\n\n if (typeof internalGa === 'function') {\n if (typeof command !== 'string') {\n warn('ga command must be a string');\n return;\n }\n\n if (_alwaysSendToDefaultTracker || !Array.isArray(trackerNames)) internalGa.apply(void 0, args);\n\n if (Array.isArray(trackerNames)) {\n trackerNames.forEach(function (name) {\n internalGa.apply(void 0, _toConsumableArray([\"\".concat(name, \".\").concat(command)].concat(args.slice(1))));\n });\n }\n }\n}\n\nfunction _initialize(gaTrackingID, options) {\n if (!gaTrackingID) {\n warn('gaTrackingID is required in initialize()');\n return;\n }\n\n if (options) {\n if (options.debug && options.debug === true) {\n _debug = true;\n }\n\n if (options.titleCase === false) {\n _titleCase = false;\n }\n\n if (options.redactEmail === false) {\n _redactEmail = false;\n }\n\n if (options.useExistingGa) {\n return;\n }\n }\n\n if (options && options.gaOptions) {\n internalGa('create', gaTrackingID, options.gaOptions);\n } else {\n internalGa('create', gaTrackingID, 'auto');\n }\n}\n\nexport function addTrackers(configsOrTrackingId, options) {\n if (Array.isArray(configsOrTrackingId)) {\n configsOrTrackingId.forEach(function (config) {\n if (_typeof(config) !== 'object') {\n warn('All configs must be an object');\n return;\n }\n\n _initialize(config.trackingId, config);\n });\n } else {\n _initialize(configsOrTrackingId, options);\n }\n\n return true;\n}\nexport function initialize(configsOrTrackingId, options) {\n if (options && options.testMode === true) {\n _testMode = true;\n } else {\n if (_isNotBrowser) {\n return;\n }\n\n if (!options || options.standardImplementation !== true) loadGA(options);\n }\n\n _alwaysSendToDefaultTracker = options && typeof options.alwaysSendToDefaultTracker === 'boolean' ? options.alwaysSendToDefaultTracker : true;\n addTrackers(configsOrTrackingId, options);\n}\n/**\n * ga:\n * Returns the original GA object.\n */\n\nexport function ga() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (args.length > 0) {\n internalGa.apply(void 0, args);\n\n if (_debug) {\n log(\"called ga('arguments');\");\n log(\"with arguments: \".concat(JSON.stringify(args)));\n }\n }\n\n return window.ga;\n}\n/**\n * set:\n * GA tracker set method\n * @param {Object} fieldsObject - a field/value pair or a group of field/value pairs on the tracker\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function set(fieldsObject, trackerNames) {\n if (!fieldsObject) {\n warn('`fieldsObject` is required in .set()');\n return;\n }\n\n if (_typeof(fieldsObject) !== 'object') {\n warn('Expected `fieldsObject` arg to be an Object');\n return;\n }\n\n if (Object.keys(fieldsObject).length === 0) {\n warn('empty `fieldsObject` given to .set()');\n }\n\n _gaCommand(trackerNames, 'set', fieldsObject);\n\n if (_debug) {\n log(\"called ga('set', fieldsObject);\");\n log(\"with fieldsObject: \".concat(JSON.stringify(fieldsObject)));\n }\n}\n/**\n * send:\n * Clone of the low level `ga.send` method\n * WARNING: No validations will be applied to this\n * @param {Object} fieldObject - field object for tracking different analytics\n * @param {Array} trackerNames - trackers to send the command to\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function send(fieldObject, trackerNames) {\n _gaCommand(trackerNames, 'send', fieldObject);\n\n if (_debug) {\n log(\"called ga('send', fieldObject);\");\n log(\"with fieldObject: \".concat(JSON.stringify(fieldObject)));\n log(\"with trackers: \".concat(JSON.stringify(trackerNames)));\n }\n}\n/**\n * pageview:\n * Basic GA pageview tracking\n * @param {String} path - the current page page e.g. '/about'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n * @param {String} title - (optional) the page title e. g. 'My Website'\n */\n\nexport function pageview(rawPath, trackerNames, title) {\n if (!rawPath) {\n warn('path is required in .pageview()');\n return;\n }\n\n var path = trim(rawPath);\n\n if (path === '') {\n warn('path cannot be an empty string in .pageview()');\n return;\n }\n\n var extraFields = {};\n\n if (title) {\n extraFields.title = title;\n }\n\n if (typeof ga === 'function') {\n _gaCommand(trackerNames, 'send', _objectSpread({\n hitType: 'pageview',\n page: path\n }, extraFields));\n\n if (_debug) {\n log(\"called ga('send', 'pageview', path);\");\n var extraLog = '';\n\n if (title) {\n extraLog = \" and title: \".concat(title);\n }\n\n log(\"with path: \".concat(path).concat(extraLog));\n }\n }\n}\n/**\n * modalview:\n * a proxy to basic GA pageview tracking to consistently track\n * modal views that are an equivalent UX to a traditional pageview\n * @param {String} modalName e.g. 'add-or-edit-club'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function modalview(rawModalName, trackerNames) {\n if (!rawModalName) {\n warn('modalName is required in .modalview(modalName)');\n return;\n }\n\n var modalName = removeLeadingSlash(trim(rawModalName));\n\n if (modalName === '') {\n warn('modalName cannot be an empty string or a single / in .modalview()');\n return;\n }\n\n if (typeof ga === 'function') {\n var path = \"/modal/\".concat(modalName);\n\n _gaCommand(trackerNames, 'send', 'pageview', path);\n\n if (_debug) {\n log(\"called ga('send', 'pageview', path);\");\n log(\"with path: \".concat(path));\n }\n }\n}\n/**\n * timing:\n * GA timing\n * @param args.category {String} required\n * @param args.variable {String} required\n * @param args.value {Int} required\n * @param args.label {String} required\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function timing() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref.category,\n variable = _ref.variable,\n value = _ref.value,\n label = _ref.label;\n\n var trackerNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n if (!category || !variable || typeof value !== 'number') {\n warn('args.category, args.variable ' + 'AND args.value are required in timing() ' + 'AND args.value has to be a number');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'timing',\n timingCategory: _format(category),\n timingVar: _format(variable),\n timingValue: value\n };\n\n if (label) {\n fieldObject.timingLabel = _format(label);\n }\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * event:\n * GA event tracking\n * @param args.category {String} required\n * @param args.action {String} required\n * @param args.label {String} optional\n * @param args.value {Int} optional\n * @param args.nonInteraction {boolean} optional\n * @param args.transport {string} optional\n * @param {{action: string, category: string}} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function event() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref2.category,\n action = _ref2.action,\n label = _ref2.label,\n value = _ref2.value,\n nonInteraction = _ref2.nonInteraction,\n transport = _ref2.transport,\n args = _objectWithoutProperties(_ref2, _excluded);\n\n var trackerNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!category || !action) {\n warn('args.category AND args.action are required in event()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: _format(category),\n eventAction: _format(action)\n }; // Optional Fields\n\n if (label) {\n fieldObject.eventLabel = _format(label);\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value !== 'number') {\n warn('Expected `args.value` arg to be a Number.');\n } else {\n fieldObject.eventValue = value;\n }\n }\n\n if (typeof nonInteraction !== 'undefined') {\n if (typeof nonInteraction !== 'boolean') {\n warn('`args.nonInteraction` must be a boolean.');\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n\n if (typeof transport !== 'undefined') {\n if (typeof transport !== 'string') {\n warn('`args.transport` must be a string.');\n } else {\n if (['beacon', 'xhr', 'image'].indexOf(transport) === -1) {\n warn('`args.transport` must be either one of these values: `beacon`, `xhr` or `image`');\n }\n\n fieldObject.transport = transport;\n }\n }\n\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'dimension'.length) === 'dimension';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n });\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'metric'.length) === 'metric';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n }); // Send to GA\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * exception:\n * GA exception tracking\n * @param args.description {String} optional\n * @param args.fatal {boolean} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function exception(_ref3, trackerNames) {\n var description = _ref3.description,\n fatal = _ref3.fatal;\n\n if (typeof ga === 'function') {\n // Required Fields\n var fieldObject = {\n hitType: 'exception'\n }; // Optional Fields\n\n if (description) {\n fieldObject.exDescription = _format(description);\n }\n\n if (typeof fatal !== 'undefined') {\n if (typeof fatal !== 'boolean') {\n warn('`args.fatal` must be a boolean.');\n } else {\n fieldObject.exFatal = fatal;\n }\n } // Send to GA\n\n\n send(fieldObject, trackerNames);\n }\n}\nexport var plugin = {\n /**\n * require:\n * GA requires a plugin\n * @param name {String} e.g. 'ecommerce' or 'myplugin'\n * @param options {Object} optional e.g {path: '/log', debug: true}\n * @param trackerName {String} optional e.g 'trackerName'\n */\n require: function require(rawName, options, trackerName) {\n if (typeof ga === 'function') {\n // Required Fields\n if (!rawName) {\n warn('`name` is required in .require()');\n return;\n }\n\n var name = trim(rawName);\n\n if (name === '') {\n warn('`name` cannot be an empty string in .require()');\n return;\n }\n\n var requireString = trackerName ? \"\".concat(trackerName, \".require\") : 'require'; // Optional Fields\n\n if (options) {\n if (_typeof(options) !== 'object') {\n warn('Expected `options` arg to be an Object');\n return;\n }\n\n if (Object.keys(options).length === 0) {\n warn('Empty `options` given to .require()');\n }\n\n ga(requireString, name, options);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"', \").concat(JSON.stringify(options)));\n }\n } else {\n ga(requireString, name);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"');\"));\n }\n }\n }\n },\n\n /**\n * execute:\n * GA execute action for plugin\n * Takes variable number of arguments\n * @param pluginName {String} e.g. 'ecommerce' or 'myplugin'\n * @param action {String} e.g. 'addItem' or 'myCustomAction'\n * @param actionType {String} optional e.g. 'detail'\n * @param payload {Object} optional e.g { id: '1x5e', name : 'My product to track' }\n */\n execute: function execute(pluginName, action) {\n var payload;\n var actionType;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n if (args.length === 1) {\n payload = args[0];\n } else {\n actionType = args[0];\n payload = args[1];\n }\n\n if (typeof ga === 'function') {\n if (typeof pluginName !== 'string') {\n warn('Expected `pluginName` arg to be a String.');\n } else if (typeof action !== 'string') {\n warn('Expected `action` arg to be a String.');\n } else {\n var command = \"\".concat(pluginName, \":\").concat(action);\n payload = payload || null;\n\n if (actionType && payload) {\n ga(command, actionType, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"actionType: \\\"\".concat(actionType, \"\\\" with payload: \").concat(JSON.stringify(payload)));\n }\n } else if (payload) {\n ga(command, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"with payload: \".concat(JSON.stringify(payload)));\n }\n } else {\n ga(command);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n }\n }\n }\n }\n }\n};\n/**\n * outboundLink:\n * GA outboundLink tracking\n * @param args.label {String} e.g. url, or 'Create an Account'\n * @param {function} hitCallback - Called after processing a hit.\n */\n\nexport function outboundLink(args, hitCallback, trackerNames) {\n if (typeof hitCallback !== 'function') {\n warn('hitCallback function is required');\n return;\n }\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!args || !args.label) {\n warn('args.label is required in outboundLink()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: 'Outbound',\n eventAction: 'Click',\n eventLabel: _format(args.label)\n };\n var safetyCallbackCalled = false;\n\n var safetyCallback = function safetyCallback() {\n // This prevents a delayed response from GA\n // causing hitCallback from being fired twice\n safetyCallbackCalled = true;\n hitCallback();\n }; // Using a timeout to ensure the execution of critical application code\n // in the case when the GA server might be down\n // or an ad blocker prevents sending the data\n // register safety net timeout:\n\n\n var t = setTimeout(safetyCallback, 250);\n\n var clearableCallbackForGA = function clearableCallbackForGA() {\n clearTimeout(t);\n\n if (!safetyCallbackCalled) {\n hitCallback();\n }\n };\n\n fieldObject.hitCallback = clearableCallbackForGA; // Send to GA\n\n send(fieldObject, trackerNames);\n } else {\n // if ga is not defined, return the callback so the application\n // continues to work as expected\n setTimeout(hitCallback, 0);\n }\n}\nexport var testModeAPI = TestModeAPI;\nexport default {\n initialize: initialize,\n ga: ga,\n set: set,\n send: send,\n pageview: pageview,\n modalview: modalview,\n timing: timing,\n event: event,\n exception: exception,\n plugin: plugin,\n outboundLink: outboundLink,\n testModeAPI: TestModeAPI\n};","export default function removeLeadingSlash(string) {\n if (string.substring(0, 1) === '/') {\n return string.substring(1);\n }\n\n return string;\n}","function 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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport UnboundOutboundLink from './components/OutboundLink';\nimport * as Defaults from './core';\nvar initialize = Defaults.initialize;\nexport { initialize };\nvar addTrackers = Defaults.addTrackers;\nexport { addTrackers };\nvar ga = Defaults.ga;\nexport { ga };\nvar set = Defaults.set;\nexport { set };\nvar send = Defaults.send;\nexport { send };\nvar pageview = Defaults.pageview;\nexport { pageview };\nvar modalview = Defaults.modalview;\nexport { modalview };\nvar timing = Defaults.timing;\nexport { timing };\nvar event = Defaults.event;\nexport { event };\nvar exception = Defaults.exception;\nexport { exception };\nvar plugin = Defaults.plugin;\nexport { plugin };\nvar outboundLink = Defaults.outboundLink;\nexport { outboundLink };\nvar testModeAPI = Defaults.testModeAPI;\nexport { testModeAPI };\nUnboundOutboundLink.origTrackLink = UnboundOutboundLink.trackLink;\nUnboundOutboundLink.trackLink = Defaults.outboundLink;\nexport var OutboundLink = UnboundOutboundLink;\nexport default _objectSpread(_objectSpread({}, Defaults), {}, {\n OutboundLink: OutboundLink\n});","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport ReactGA from 'react-ga';\n\nconst { NODE_ENV, REACT_APP_GA_TRACKING_ID } = process.env;\n\nif (NODE_ENV === 'production') {\n ReactGA.initialize(REACT_APP_GA_TRACKING_ID);\n}\n\nconst Analytics = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n if (NODE_ENV === 'production') {\n ReactGA.set({\n page: pathname,\n });\n ReactGA.pageview(pathname);\n }\n }, [pathname]);\n\n return null;\n};\n\nexport default Analytics;\n","const routes = [\n {\n index: true,\n label: 'Edgar Allan Poniente',\n path: '/',\n },\n {\n label: 'Contact',\n path: '/contact',\n },\n];\n\nexport default routes;\n","import React, { Suspense, lazy, useState } from 'react';\n\nimport { Link } from 'react-router-dom';\nimport routes from '../../data/routes';\n\nconst Menu = lazy(() => import('react-burger-menu/lib/menus/slide'));\n\nconst Hamburger = () => {\n const [open, setOpen] = useState(false);\n\n return (\n
\n \n }>\n \n
    \n {routes.map((l) => (\n
  • \n setOpen(!open)}>\n

    {l.label}

    \n \n
  • \n ))}\n
\n
\n
\n
\n );\n};\n\nexport default Hamburger;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nimport Hamburger from './Hamburger';\nimport routes from '../../data/routes';\n\n// Websites Navbar, displays routes defined in 'src/data/routes'\nconst Navigation = () => (\n
\n

\n {routes\n .filter((l) => l.index)\n .map((l) => (\n \n {l.label}\n \n ))}\n

\n \n \n
\n);\n\nexport default Navigation;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nimport ContactIcons from '../Contact/ContactIcons';\n\nconst { PUBLIC_URL } = process.env; // set automatically from package.json:homepage\n\nconst SideBar = () => (\n
\n
\n \n \"\"\n \n
\n

Edgar Allan Poniente

\n

\n edgar.poniente@gmail.com\n

\n
\n
\n\n
\n

About

\n

\n Hi, I'm Edgar. Previously, I\n worked at FileInvite as a Senior Software Engineer.\n

\n
\n\n
\n \n

\n © Edgar Allan Poniente eaponiente.me.\n

\n
\n
\n);\n\nexport default SideBar;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// See https://reacttraining.com/react-router/web/guides/scroll-restoration/scroll-to-top\nconst ScrollToTop = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n};\n\nexport default ScrollToTop;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Helmet, HelmetProvider } from 'react-helmet-async';\n\nimport Analytics from '../components/Template/Analytics';\nimport Navigation from '../components/Template/Navigation';\nimport SideBar from '../components/Template/SideBar';\nimport ScrollToTop from '../components/Template/ScrollToTop';\n\nconst Main = (props) => (\n \n \n \n \n {props.title && {props.title}}\n \n \n
\n \n
{props.children}
\n {props.fullPage ? null : }\n
\n
\n);\n\nMain.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n fullPage: PropTypes.bool,\n title: PropTypes.string,\n description: PropTypes.string,\n};\n\nMain.defaultProps = {\n children: null,\n fullPage: false,\n title: null,\n description: 'Edgar Poniente personal website.',\n};\n\nexport default Main;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fab';\nvar iconName = 'github';\nvar width = 496;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f09b';\nvar svgPathData = 'M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faGithub = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fab';\nvar iconName = 'linkedin-in';\nvar width = 448;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f0e1';\nvar svgPathData = 'M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faLinkedinIn = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'far';\nvar iconName = 'envelope';\nvar width = 512;\nvar height = 512;\nvar aliases = [128386,9993,61443];\nvar unicode = 'f0e0';\nvar svgPathData = 'M64 112c-8.8 0-16 7.2-16 16l0 22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1l0-22.1c0-8.8-7.2-16-16-16L64 112zM48 212.2L48 384c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-171.8L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faEnvelope = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location 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\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 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 ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs\n) => void | Promise;\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: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(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/v6/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 return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\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(\n branches[i],\n decoded,\n allowPartial\n );\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 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 allowPartial = false\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 let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\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/v6/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/v6/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\nexport function 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/v6/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 === pathMatches.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 *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\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 class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\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\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\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\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"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 DataStrategyResult,\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 AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\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 matchRoutesImpl,\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 * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): 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 v7_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 dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\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 dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n 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 viewTransitionOpts?: ViewTransitionOpts;\n 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 flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n 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 * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\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 * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\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.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\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 v7_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 && !patchRoutesOnNavigationImpl) {\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 // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\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 (!initialMatches.some((m) => m.route.loader)) {\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 // 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\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\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: Set = new Set();\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 // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\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 unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\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 (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\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 let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\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, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => 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 viewTransitionOpts: opts.viewTransitionOpts,\n 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 // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\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 }\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.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.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 {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\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 let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\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 hydration 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 fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = 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 {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\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: updatedMatches || 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 isFogOfWar: boolean,\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 if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\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 state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\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, true, {\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 to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\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 isFogOfWar: boolean,\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 // 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 let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\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.v7_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 (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\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,\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\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);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\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 fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\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 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 // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): 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 return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\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 return new Map(state.fetchers);\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 abortFetcher(key);\n\n let flushSync = (opts && opts.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 let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\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 let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\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 fogOfWar.active,\n flushSync,\n preventScrollReset,\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 isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.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 true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\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 let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\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, false, {\n fetcherSubmission: submission,\n preventScrollReset,\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.v7_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 abortFetcher(staleKey);\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,\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);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\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 fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\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 isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: 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 let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\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, false, {\n preventScrollReset,\n });\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 isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\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 || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : 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 these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\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 these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\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 state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\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 matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\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.add(key);\n }\n abortFetcher(key);\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 cancelledFetcherLoads.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 if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\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 handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\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 checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\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 patchRoutes,\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 dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n 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 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 dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n 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 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 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 dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n 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 `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(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 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 dataStrategy\n );\n result = results[actionMatch.route.id];\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 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 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 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 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 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 dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(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 match.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 dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\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 // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\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 at/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 includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\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 boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\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 (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\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 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 hydration (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 initialHydration ||\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.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\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 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 shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\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\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\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\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\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\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: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\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 loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\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 = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\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 loadRoutePromise,\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 loadRoutePromise;\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 // DataStrategyResults 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 convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\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 if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\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 if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\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 results: Record,\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 matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[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 results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\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 revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\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 message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\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: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\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 isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\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 isRedirectDataStrategyResultResult(result: DataStrategyResult) {\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 isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\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 resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\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) && 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 await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\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 if (isDeferredResult(result)) {\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 invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\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//#endregion\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\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&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(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=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(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=Sg(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);Mg(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=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(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,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();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=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;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;zj(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;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(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=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&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 Ij(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 zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);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(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(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 Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(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:Ci(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=Nj;Nj=!1;return n}\nfunction Pj(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&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(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 Rj(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 Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(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 Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(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 Vj(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(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(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(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(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=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=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)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(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)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(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*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=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()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(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);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();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,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(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:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(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=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(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),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(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(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(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=mh(-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);bh(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);bh(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}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(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 $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(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 Pg(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 Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(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 pj(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 Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(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 al(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 bl(a,b,c,d,e,f,g,h,k){a=new al(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};kh(f);return a}function cl(a,b,c){var d=3 &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _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}","// src/index.tsx\nimport React3, { Component as Component3 } from \"react\";\nimport fastCompare from \"react-fast-compare\";\nimport invariant from \"invariant\";\n\n// src/Provider.tsx\nimport React2, { Component } from \"react\";\n\n// src/server.ts\nimport React from \"react\";\n\n// src/constants.ts\nvar TAG_NAMES = /* @__PURE__ */ ((TAG_NAMES2) => {\n TAG_NAMES2[\"BASE\"] = \"base\";\n TAG_NAMES2[\"BODY\"] = \"body\";\n TAG_NAMES2[\"HEAD\"] = \"head\";\n TAG_NAMES2[\"HTML\"] = \"html\";\n TAG_NAMES2[\"LINK\"] = \"link\";\n TAG_NAMES2[\"META\"] = \"meta\";\n TAG_NAMES2[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES2[\"SCRIPT\"] = \"script\";\n TAG_NAMES2[\"STYLE\"] = \"style\";\n TAG_NAMES2[\"TITLE\"] = \"title\";\n TAG_NAMES2[\"FRAGMENT\"] = \"Symbol(react.fragment)\";\n return TAG_NAMES2;\n})(TAG_NAMES || {});\nvar SEO_PRIORITY_TAGS = {\n link: { rel: [\"amphtml\", \"canonical\", \"alternate\"] },\n script: { type: [\"application/ld+json\"] },\n meta: {\n charset: \"\",\n name: [\"generator\", \"robots\", \"description\"],\n property: [\n \"og:type\",\n \"og:title\",\n \"og:url\",\n \"og:image\",\n \"og:image:alt\",\n \"og:description\",\n \"twitter:url\",\n \"twitter:title\",\n \"twitter:description\",\n \"twitter:image\",\n \"twitter:image:alt\",\n \"twitter:card\",\n \"twitter:site\"\n ]\n }\n};\nvar VALID_TAG_NAMES = Object.values(TAG_NAMES);\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HTML_TAG_MAP = Object.entries(REACT_TAG_MAP).reduce(\n (carry, [key, value]) => {\n carry[value] = key;\n return carry;\n },\n {}\n);\nvar HELMET_ATTRIBUTE = \"data-rh\";\n\n// src/utils.ts\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\",\n PRIORITIZE_SEO_TAGS: \"prioritizeSeoTags\"\n};\nvar getInnermostProperty = (propsList, property) => {\n for (let i = propsList.length - 1; i >= 0; i -= 1) {\n const props = propsList[i];\n if (Object.prototype.hasOwnProperty.call(props, property)) {\n return props[property];\n }\n }\n return null;\n};\nvar getTitleFromPropsList = (propsList) => {\n let innermostTitle = getInnermostProperty(propsList, \"title\" /* TITLE */);\n const innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (Array.isArray(innermostTitle)) {\n innermostTitle = innermostTitle.join(\"\");\n }\n if (innermostTemplate && innermostTitle) {\n return innermostTemplate.replace(/%s/g, () => innermostTitle);\n }\n const innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || void 0;\n};\nvar getOnChangeClientState = (propsList) => getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || (() => {\n});\nvar getAttributesFromPropsList = (tagType, propsList) => propsList.filter((props) => typeof props[tagType] !== \"undefined\").map((props) => props[tagType]).reduce((tagAttrs, current) => ({ ...tagAttrs, ...current }), {});\nvar getBaseTagFromPropsList = (primaryAttributes, propsList) => propsList.filter((props) => typeof props[\"base\" /* BASE */] !== \"undefined\").map((props) => props[\"base\" /* BASE */]).reverse().reduce((innermostBaseTag, tag) => {\n if (!innermostBaseTag.length) {\n const keys = Object.keys(tag);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n return innermostBaseTag;\n}, []);\nvar warn = (msg) => console && typeof console.warn === \"function\" && console.warn(msg);\nvar getTagsFromPropsList = (tagName, primaryAttributes, propsList) => {\n const approvedSeenTags = {};\n return propsList.filter((props) => {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\n `Helmet: ${tagName} should be of type \"Array\". Instead found type \"${typeof props[tagName]}\"`\n );\n }\n return false;\n }).map((props) => props[tagName]).reverse().reduce((approvedTags, instanceTags) => {\n const instanceSeenTags = {};\n instanceTags.filter((tag) => {\n let primaryAttributeKey;\n const keys2 = Object.keys(tag);\n for (let i = 0; i < keys2.length; i += 1) {\n const attributeKey = keys2[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === \"rel\" /* REL */ && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === \"rel\" /* REL */ && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === \"innerHTML\" /* INNER_HTML */ || attributeKey === \"cssText\" /* CSS_TEXT */ || attributeKey === \"itemprop\" /* ITEM_PROP */)) {\n primaryAttributeKey = attributeKey;\n }\n }\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n const value = tag[primaryAttributeKey].toLowerCase();\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n return false;\n }).reverse().forEach((tag) => approvedTags.push(tag));\n const keys = Object.keys(instanceSeenTags);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const tagUnion = {\n ...approvedSeenTags[attributeKey],\n ...instanceSeenTags[attributeKey]\n };\n approvedSeenTags[attributeKey] = tagUnion;\n }\n return approvedTags;\n }, []).reverse();\n};\nvar getAnyTrueFromPropsList = (propsList, checkedTag) => {\n if (Array.isArray(propsList) && propsList.length) {\n for (let index = 0; index < propsList.length; index += 1) {\n const prop = propsList[index];\n if (prop[checkedTag]) {\n return true;\n }\n }\n }\n return false;\n};\nvar reducePropsToState = (propsList) => ({\n baseTag: getBaseTagFromPropsList([\"href\" /* HREF */], propsList),\n bodyAttributes: getAttributesFromPropsList(\"bodyAttributes\" /* BODY */, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(\"htmlAttributes\" /* HTML */, propsList),\n linkTags: getTagsFromPropsList(\n \"link\" /* LINK */,\n [\"rel\" /* REL */, \"href\" /* HREF */],\n propsList\n ),\n metaTags: getTagsFromPropsList(\n \"meta\" /* META */,\n [\n \"name\" /* NAME */,\n \"charset\" /* CHARSET */,\n \"http-equiv\" /* HTTPEQUIV */,\n \"property\" /* PROPERTY */,\n \"itemprop\" /* ITEM_PROP */\n ],\n propsList\n ),\n noscriptTags: getTagsFromPropsList(\"noscript\" /* NOSCRIPT */, [\"innerHTML\" /* INNER_HTML */], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(\n \"script\" /* SCRIPT */,\n [\"src\" /* SRC */, \"innerHTML\" /* INNER_HTML */],\n propsList\n ),\n styleTags: getTagsFromPropsList(\"style\" /* STYLE */, [\"cssText\" /* CSS_TEXT */], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(\"titleAttributes\" /* TITLE */, propsList),\n prioritizeSeoTags: getAnyTrueFromPropsList(propsList, HELMET_PROPS.PRIORITIZE_SEO_TAGS)\n});\nvar flattenArray = (possibleArray) => Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\nvar checkIfPropsMatch = (props, toMatch) => {\n const keys = Object.keys(props);\n for (let i = 0; i < keys.length; i += 1) {\n if (toMatch[keys[i]] && toMatch[keys[i]].includes(props[keys[i]])) {\n return true;\n }\n }\n return false;\n};\nvar prioritizer = (elementsList, propsToMatch) => {\n if (Array.isArray(elementsList)) {\n return elementsList.reduce(\n (acc, elementAttrs) => {\n if (checkIfPropsMatch(elementAttrs, propsToMatch)) {\n acc.priority.push(elementAttrs);\n } else {\n acc.default.push(elementAttrs);\n }\n return acc;\n },\n { priority: [], default: [] }\n );\n }\n return { default: elementsList, priority: [] };\n};\nvar without = (obj, key) => {\n return {\n ...obj,\n [key]: void 0\n };\n};\n\n// src/server.ts\nvar SELF_CLOSING_TAGS = [\"noscript\" /* NOSCRIPT */, \"script\" /* SCRIPT */, \"style\" /* STYLE */];\nvar encodeSpecialCharacters = (str, encode = true) => {\n if (encode === false) {\n return String(str);\n }\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\nvar generateElementAttributesAsString = (attributes) => Object.keys(attributes).reduce((str, key) => {\n const attr = typeof attributes[key] !== \"undefined\" ? `${key}=\"${attributes[key]}\"` : `${key}`;\n return str ? `${str} ${attr}` : attr;\n}, \"\");\nvar generateTitleAsString = (type, title, attributes, encode) => {\n const attributeString = generateElementAttributesAsString(attributes);\n const flattenedTitle = flattenArray(title);\n return attributeString ? `<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeString}>${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}` : `<${type} ${HELMET_ATTRIBUTE}=\"true\">${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}`;\n};\nvar generateTagsAsString = (type, tags, encode = true) => tags.reduce((str, t) => {\n const tag = t;\n const attributeHtml = Object.keys(tag).filter(\n (attribute) => !(attribute === \"innerHTML\" /* INNER_HTML */ || attribute === \"cssText\" /* CSS_TEXT */)\n ).reduce((string, attribute) => {\n const attr = typeof tag[attribute] === \"undefined\" ? attribute : `${attribute}=\"${encodeSpecialCharacters(tag[attribute], encode)}\"`;\n return string ? `${string} ${attr}` : attr;\n }, \"\");\n const tagContent = tag.innerHTML || tag.cssText || \"\";\n const isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return `${str}<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeHtml}${isSelfClosing ? `/>` : `>${tagContent}`}`;\n}, \"\");\nvar convertElementAttributesToReactProps = (attributes, initProps = {}) => Object.keys(attributes).reduce((obj, key) => {\n const mapped = REACT_TAG_MAP[key];\n obj[mapped || key] = attributes[key];\n return obj;\n}, initProps);\nvar generateTitleAsReactComponent = (_type, title, attributes) => {\n const initProps = {\n key: title,\n [HELMET_ATTRIBUTE]: true\n };\n const props = convertElementAttributesToReactProps(attributes, initProps);\n return [React.createElement(\"title\" /* TITLE */, props, title)];\n};\nvar generateTagsAsReactComponent = (type, tags) => tags.map((tag, i) => {\n const mappedTag = {\n key: i,\n [HELMET_ATTRIBUTE]: true\n };\n Object.keys(tag).forEach((attribute) => {\n const mapped = REACT_TAG_MAP[attribute];\n const mappedAttribute = mapped || attribute;\n if (mappedAttribute === \"innerHTML\" /* INNER_HTML */ || mappedAttribute === \"cssText\" /* CSS_TEXT */) {\n const content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n});\nvar getMethodsForTag = (type, tags, encode = true) => {\n switch (type) {\n case \"title\" /* TITLE */:\n return {\n toComponent: () => generateTitleAsReactComponent(type, tags.title, tags.titleAttributes),\n toString: () => generateTitleAsString(type, tags.title, tags.titleAttributes, encode)\n };\n case \"bodyAttributes\" /* BODY */:\n case \"htmlAttributes\" /* HTML */:\n return {\n toComponent: () => convertElementAttributesToReactProps(tags),\n toString: () => generateElementAttributesAsString(tags)\n };\n default:\n return {\n toComponent: () => generateTagsAsReactComponent(type, tags),\n toString: () => generateTagsAsString(type, tags, encode)\n };\n }\n};\nvar getPriorityMethods = ({ metaTags, linkTags, scriptTags, encode }) => {\n const meta = prioritizer(metaTags, SEO_PRIORITY_TAGS.meta);\n const link = prioritizer(linkTags, SEO_PRIORITY_TAGS.link);\n const script = prioritizer(scriptTags, SEO_PRIORITY_TAGS.script);\n const priorityMethods = {\n toComponent: () => [\n ...generateTagsAsReactComponent(\"meta\" /* META */, meta.priority),\n ...generateTagsAsReactComponent(\"link\" /* LINK */, link.priority),\n ...generateTagsAsReactComponent(\"script\" /* SCRIPT */, script.priority)\n ],\n toString: () => (\n // generate all the tags as strings and concatenate them\n `${getMethodsForTag(\"meta\" /* META */, meta.priority, encode)} ${getMethodsForTag(\n \"link\" /* LINK */,\n link.priority,\n encode\n )} ${getMethodsForTag(\"script\" /* SCRIPT */, script.priority, encode)}`\n )\n };\n return {\n priorityMethods,\n metaTags: meta.default,\n linkTags: link.default,\n scriptTags: script.default\n };\n};\nvar mapStateOnServer = (props) => {\n const {\n baseTag,\n bodyAttributes,\n encode = true,\n htmlAttributes,\n noscriptTags,\n styleTags,\n title = \"\",\n titleAttributes,\n prioritizeSeoTags\n } = props;\n let { linkTags, metaTags, scriptTags } = props;\n let priorityMethods = {\n toComponent: () => {\n },\n toString: () => \"\"\n };\n if (prioritizeSeoTags) {\n ({ priorityMethods, linkTags, metaTags, scriptTags } = getPriorityMethods(props));\n }\n return {\n priority: priorityMethods,\n base: getMethodsForTag(\"base\" /* BASE */, baseTag, encode),\n bodyAttributes: getMethodsForTag(\"bodyAttributes\" /* BODY */, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(\"htmlAttributes\" /* HTML */, htmlAttributes, encode),\n link: getMethodsForTag(\"link\" /* LINK */, linkTags, encode),\n meta: getMethodsForTag(\"meta\" /* META */, metaTags, encode),\n noscript: getMethodsForTag(\"noscript\" /* NOSCRIPT */, noscriptTags, encode),\n script: getMethodsForTag(\"script\" /* SCRIPT */, scriptTags, encode),\n style: getMethodsForTag(\"style\" /* STYLE */, styleTags, encode),\n title: getMethodsForTag(\"title\" /* TITLE */, { title, titleAttributes }, encode)\n };\n};\nvar server_default = mapStateOnServer;\n\n// src/HelmetData.ts\nvar instances = [];\nvar isDocument = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar HelmetData = class {\n instances = [];\n canUseDOM = isDocument;\n context;\n value = {\n setHelmet: (serverState) => {\n this.context.helmet = serverState;\n },\n helmetInstances: {\n get: () => this.canUseDOM ? instances : this.instances,\n add: (instance) => {\n (this.canUseDOM ? instances : this.instances).push(instance);\n },\n remove: (instance) => {\n const index = (this.canUseDOM ? instances : this.instances).indexOf(instance);\n (this.canUseDOM ? instances : this.instances).splice(index, 1);\n }\n }\n };\n constructor(context, canUseDOM) {\n this.context = context;\n this.canUseDOM = canUseDOM || false;\n if (!canUseDOM) {\n context.helmet = server_default({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n }\n};\n\n// src/Provider.tsx\nvar defaultValue = {};\nvar Context = React2.createContext(defaultValue);\nvar HelmetProvider = class _HelmetProvider extends Component {\n static canUseDOM = isDocument;\n helmetData;\n constructor(props) {\n super(props);\n this.helmetData = new HelmetData(this.props.context || {}, _HelmetProvider.canUseDOM);\n }\n render() {\n return /* @__PURE__ */ React2.createElement(Context.Provider, { value: this.helmetData.value }, this.props.children);\n }\n};\n\n// src/Dispatcher.tsx\nimport { Component as Component2 } from \"react\";\nimport shallowEqual from \"shallowequal\";\n\n// src/client.ts\nvar updateTags = (type, tags) => {\n const headElement = document.head || document.querySelector(\"head\" /* HEAD */);\n const tagNodes = headElement.querySelectorAll(`${type}[${HELMET_ATTRIBUTE}]`);\n const oldTags = [].slice.call(tagNodes);\n const newTags = [];\n let indexToDelete;\n if (tags && tags.length) {\n tags.forEach((tag) => {\n const newElement = document.createElement(type);\n for (const attribute in tag) {\n if (Object.prototype.hasOwnProperty.call(tag, attribute)) {\n if (attribute === \"innerHTML\" /* INNER_HTML */) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === \"cssText\" /* CSS_TEXT */) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n const attr = attribute;\n const value = typeof tag[attr] === \"undefined\" ? \"\" : tag[attr];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n if (oldTags.some((existingTag, index) => {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n oldTags.forEach((tag) => tag.parentNode?.removeChild(tag));\n newTags.forEach((tag) => headElement.appendChild(tag));\n return {\n oldTags,\n newTags\n };\n};\nvar updateAttributes = (tagName, attributes) => {\n const elementTag = document.getElementsByTagName(tagName)[0];\n if (!elementTag) {\n return;\n }\n const helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n const helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n const attributesToRemove = [...helmetAttributes];\n const attributeKeys = Object.keys(attributes);\n for (const attribute of attributeKeys) {\n const value = attributes[attribute] || \"\";\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n const indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n for (let i = attributesToRemove.length - 1; i >= 0; i -= 1) {\n elementTag.removeAttribute(attributesToRemove[i]);\n }\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\nvar updateTitle = (title, attributes) => {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n updateAttributes(\"title\" /* TITLE */, attributes);\n};\nvar commitTagChanges = (newState, cb) => {\n const {\n baseTag,\n bodyAttributes,\n htmlAttributes,\n linkTags,\n metaTags,\n noscriptTags,\n onChangeClientState,\n scriptTags,\n styleTags,\n title,\n titleAttributes\n } = newState;\n updateAttributes(\"body\" /* BODY */, bodyAttributes);\n updateAttributes(\"html\" /* HTML */, htmlAttributes);\n updateTitle(title, titleAttributes);\n const tagUpdates = {\n baseTag: updateTags(\"base\" /* BASE */, baseTag),\n linkTags: updateTags(\"link\" /* LINK */, linkTags),\n metaTags: updateTags(\"meta\" /* META */, metaTags),\n noscriptTags: updateTags(\"noscript\" /* NOSCRIPT */, noscriptTags),\n scriptTags: updateTags(\"script\" /* SCRIPT */, scriptTags),\n styleTags: updateTags(\"style\" /* STYLE */, styleTags)\n };\n const addedTags = {};\n const removedTags = {};\n Object.keys(tagUpdates).forEach((tagType) => {\n const { newTags, oldTags } = tagUpdates[tagType];\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n if (cb) {\n cb();\n }\n onChangeClientState(newState, addedTags, removedTags);\n};\nvar _helmetCallback = null;\nvar handleStateChangeOnClient = (newState) => {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(() => {\n commitTagChanges(newState, () => {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\nvar client_default = handleStateChangeOnClient;\n\n// src/Dispatcher.tsx\nvar HelmetDispatcher = class extends Component2 {\n rendered = false;\n shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n }\n componentDidUpdate() {\n this.emitChange();\n }\n componentWillUnmount() {\n const { helmetInstances } = this.props.context;\n helmetInstances.remove(this);\n this.emitChange();\n }\n emitChange() {\n const { helmetInstances, setHelmet } = this.props.context;\n let serverState = null;\n const state = reducePropsToState(\n helmetInstances.get().map((instance) => {\n const props = { ...instance.props };\n delete props.context;\n return props;\n })\n );\n if (HelmetProvider.canUseDOM) {\n client_default(state);\n } else if (server_default) {\n serverState = server_default(state);\n }\n setHelmet(serverState);\n }\n // componentWillMount will be deprecated\n // for SSR, initialize on first render\n // constructor is also unsafe in StrictMode\n init() {\n if (this.rendered) {\n return;\n }\n this.rendered = true;\n const { helmetInstances } = this.props.context;\n helmetInstances.add(this);\n this.emitChange();\n }\n render() {\n this.init();\n return null;\n }\n};\n\n// src/index.tsx\nvar Helmet = class extends Component3 {\n static defaultProps = {\n defer: true,\n encodeSpecialCharacters: true,\n prioritizeSeoTags: false\n };\n shouldComponentUpdate(nextProps) {\n return !fastCompare(without(this.props, \"helmetData\"), without(nextProps, \"helmetData\"));\n }\n mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n switch (child.type) {\n case \"script\" /* SCRIPT */:\n case \"noscript\" /* NOSCRIPT */:\n return {\n innerHTML: nestedChildren\n };\n case \"style\" /* STYLE */:\n return {\n cssText: nestedChildren\n };\n default:\n throw new Error(\n `<${child.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`\n );\n }\n }\n flattenArrayTypeChildren(child, arrayTypeChildren, newChildProps, nestedChildren) {\n return {\n ...arrayTypeChildren,\n [child.type]: [\n ...arrayTypeChildren[child.type] || [],\n {\n ...newChildProps,\n ...this.mapNestedChildrenToProps(child, nestedChildren)\n }\n ]\n };\n }\n mapObjectTypeChildren(child, newProps, newChildProps, nestedChildren) {\n switch (child.type) {\n case \"title\" /* TITLE */:\n return {\n ...newProps,\n [child.type]: nestedChildren,\n titleAttributes: { ...newChildProps }\n };\n case \"body\" /* BODY */:\n return {\n ...newProps,\n bodyAttributes: { ...newChildProps }\n };\n case \"html\" /* HTML */:\n return {\n ...newProps,\n htmlAttributes: { ...newChildProps }\n };\n default:\n return {\n ...newProps,\n [child.type]: { ...newChildProps }\n };\n }\n }\n mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n let newFlattenedProps = { ...newProps };\n Object.keys(arrayTypeChildren).forEach((arrayChildName) => {\n newFlattenedProps = {\n ...newFlattenedProps,\n [arrayChildName]: arrayTypeChildren[arrayChildName]\n };\n });\n return newFlattenedProps;\n }\n warnOnInvalidChildren(child, nestedChildren) {\n invariant(\n VALID_TAG_NAMES.some((name) => child.type === name),\n typeof child.type === \"function\" ? `You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.` : `Only elements types ${VALID_TAG_NAMES.join(\n \", \"\n )} are allowed. Helmet does not support rendering <${child.type}> elements. Refer to our API for more information.`\n );\n invariant(\n !nestedChildren || typeof nestedChildren === \"string\" || Array.isArray(nestedChildren) && !nestedChildren.some((nestedChild) => typeof nestedChild !== \"string\"),\n `Helmet expects a string as a child of <${child.type}>. Did you forget to wrap your children in braces? ( <${child.type}>{\\`\\`} ) Refer to our API for more information.`\n );\n return true;\n }\n mapChildrenToProps(children, newProps) {\n let arrayTypeChildren = {};\n React3.Children.forEach(children, (child) => {\n if (!child || !child.props) {\n return;\n }\n const { children: nestedChildren, ...childProps } = child.props;\n const newChildProps = Object.keys(childProps).reduce((obj, key) => {\n obj[HTML_TAG_MAP[key] || key] = childProps[key];\n return obj;\n }, {});\n let { type } = child;\n if (typeof type === \"symbol\") {\n type = type.toString();\n } else {\n this.warnOnInvalidChildren(child, nestedChildren);\n }\n switch (type) {\n case \"Symbol(react.fragment)\" /* FRAGMENT */:\n newProps = this.mapChildrenToProps(nestedChildren, newProps);\n break;\n case \"link\" /* LINK */:\n case \"meta\" /* META */:\n case \"noscript\" /* NOSCRIPT */:\n case \"script\" /* SCRIPT */:\n case \"style\" /* STYLE */:\n arrayTypeChildren = this.flattenArrayTypeChildren(\n child,\n arrayTypeChildren,\n newChildProps,\n nestedChildren\n );\n break;\n default:\n newProps = this.mapObjectTypeChildren(child, newProps, newChildProps, nestedChildren);\n break;\n }\n });\n return this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n }\n render() {\n const { children, ...props } = this.props;\n let newProps = { ...props };\n let { helmetData } = props;\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n if (helmetData && !(helmetData instanceof HelmetData)) {\n const data = helmetData;\n helmetData = new HelmetData(data.context, true);\n delete newProps.helmetData;\n }\n return helmetData ? /* @__PURE__ */ React3.createElement(HelmetDispatcher, { ...newProps, context: helmetData.value }) : /* @__PURE__ */ React3.createElement(Context.Consumer, null, (context) => /* @__PURE__ */ React3.createElement(HelmetDispatcher, { ...newProps, context }));\n }\n};\nexport {\n Helmet,\n HelmetData,\n HelmetProvider\n};\n","import type {\n FormEncType,\n HTMLFormMethod,\n RelativeRoutingType,\n} from \"@remix-run/router\";\nimport { stripBasename, UNSAFE_warning as warning } from \"@remix-run/router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n MouseEvent,\n \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\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\n/**\n * Submit options shared by both navigations and fetchers\n */\ninterface SharedSubmitOptions {\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 * 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 submission's state updates\n */\n flushSync?: boolean;\n}\n\n/**\n * Submit options available to fetchers\n */\nexport interface FetcherSubmitOptions extends SharedSubmitOptions {}\n\n/**\n * Submit options available to navigations\n */\nexport interface SubmitOptions extends FetcherSubmitOptions {\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 * 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 * Enable view transitions on this submission navigation\n */\n 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