{"version":3,"file":"app-9d7fbdf9af0b3492206e.js","mappings":"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","sources":["webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/construct.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/createClass.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/extends.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/regenerator/index.js","webpack://signature-products-gmb-h/./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack://signature-products-gmb-h/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://signature-products-gmb-h/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://signature-products-gmb-h/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://signature-products-gmb-h/./node_modules/@loadable/component/dist/loadable.esm.js","webpack://signature-products-gmb-h/./node_modules/@mdx-js/react/dist/esm.js","webpack://signature-products-gmb-h/./node_modules/camelcase/index.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/TemplateTag/TemplateTag.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/commaLists/commaLists.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/commaListsAnd/commaListsAnd.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/commaListsOr/commaListsOr.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/html/html.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/safeHtml/safeHtml.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/oneLine/oneLine.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/oneLineTrim/oneLineTrim.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/inlineLists/inlineLists.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/stripIndent/stripIndent.js","webpack://signature-products-gmb-h/./node_modules/common-tags/es/stripIndents/stripIndents.js","webpack://signature-products-gmb-h/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://signature-products-gmb-h/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://signature-products-gmb-h/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://signature-products-gmb-h/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://signature-products-gmb-h/./node_modules/i18next/dist/esm/i18next.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://signature-products-gmb-h/./node_modules/react-fast-compare/index.js","webpack://signature-products-gmb-h/./node_modules/react-helmet/es/Helmet.js","webpack://signature-products-gmb-h/./node_modules/react-i18next/dist/es/context.js","webpack://signature-products-gmb-h/./node_modules/react-i18next/dist/es/utils.js","webpack://signature-products-gmb-h/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://signature-products-gmb-h/./node_modules/react-is/cjs/react-is.production.min.js","webpack://signature-products-gmb-h/./node_modules/react-is/index.js","webpack://signature-products-gmb-h/./node_modules/react-side-effect/lib/index.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/a-callable.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/add-to-unscopables.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/an-object.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/array-includes.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/array-species-constructor.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/array-species-create.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/classof-raw.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/classof.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/create-property-descriptor.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/descriptors.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/document-create-element.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/engine-user-agent.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/engine-v8-version.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/enum-bug-keys.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/export.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/fails.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/flatten-into-array.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/function-bind-context.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/function-bind-native.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/function-call.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/function-name.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/function-uncurry-this.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/get-built-in.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/get-method.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/global.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/has-own-property.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/hidden-keys.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/html.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/ie8-dom-define.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/indexed-object.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/inspect-source.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/internal-state.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/is-array.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/is-callable.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/is-constructor.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/is-forced.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/is-object.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/is-pure.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/is-symbol.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/length-of-array-like.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/native-symbol.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/native-weak-map.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-create.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-define-properties.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-define-property.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-keys-internal.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-keys.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/own-keys.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/redefine.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/require-object-coercible.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/set-global.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/shared-key.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/shared-store.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/shared.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/to-absolute-index.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/to-indexed-object.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/to-length.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/to-object.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/to-primitive.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/to-property-key.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/to-string-tag-support.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/try-to-string.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/uid.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://signature-products-gmb-h/./node_modules/core-js/internals/well-known-symbol.js","webpack://signature-products-gmb-h/./node_modules/core-js/modules/es.array.flat-map.js","webpack://signature-products-gmb-h/./node_modules/core-js/modules/es.array.flat.js","webpack://signature-products-gmb-h/./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack://signature-products-gmb-h/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://signature-products-gmb-h/./node_modules/core-js/modules/es.global-this.js","webpack://signature-products-gmb-h/./node_modules/core-js/modules/esnext.global-this.js","webpack://signature-products-gmb-h/./node_modules/gatsby-link/index.js","webpack://signature-products-gmb-h/./node_modules/gatsby-link/is-local-link.js","webpack://signature-products-gmb-h/./node_modules/gatsby-link/parse-path.js","webpack://signature-products-gmb-h/./node_modules/gatsby-link/rewrite-link-path.js","webpack://signature-products-gmb-h/./node_modules/gatsby-react-router-scroll/index.js","webpack://signature-products-gmb-h/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://signature-products-gmb-h/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://signature-products-gmb-h/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://signature-products-gmb-h/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://signature-products-gmb-h/./.cache/api-runner-browser-plugins.js","webpack://signature-products-gmb-h/./.cache/api-runner-browser.js","webpack://signature-products-gmb-h/./node_modules/mitt/dist/mitt.es.js","webpack://signature-products-gmb-h/./.cache/emitter.js","webpack://signature-products-gmb-h/./.cache/normalize-page-path.js","webpack://signature-products-gmb-h/./.cache/find-path.js","webpack://signature-products-gmb-h/./.cache/gatsby-browser-entry.js","webpack://signature-products-gmb-h/./.cache/prefetch.js","webpack://signature-products-gmb-h/./.cache/loader.js","webpack://signature-products-gmb-h/./.cache/page-renderer.js","webpack://signature-products-gmb-h/./.cache/route-announcer-props.js","webpack://signature-products-gmb-h/./.cache/navigation.js","webpack://signature-products-gmb-h/./node_modules/shallow-compare/es/index.js","webpack://signature-products-gmb-h/./.cache/ensure-resources.js","webpack://signature-products-gmb-h/./.cache/production-app.js","webpack://signature-products-gmb-h/./.cache/public-page-renderer-prod.js","webpack://signature-products-gmb-h/./.cache/public-page-renderer.js","webpack://signature-products-gmb-h/./.cache/react-lifecycles-compat.js","webpack://signature-products-gmb-h/./.cache/redirect-utils.js","webpack://signature-products-gmb-h/./.cache/register-service-worker.js","webpack://signature-products-gmb-h/./.cache/strip-prefix.js","webpack://signature-products-gmb-h/./node_modules/i18next-http-backend/esm/utils.js","webpack://signature-products-gmb-h/./node_modules/i18next-http-backend/esm/request.js","webpack://signature-products-gmb-h/./node_modules/i18next-http-backend/esm/index.js","webpack://signature-products-gmb-h/./src/hooks/useOutsideClick.tsx","webpack://signature-products-gmb-h/./src/components/images/Logo.tsx","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/math.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/enums.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/createPopper.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/within.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/popper.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://signature-products-gmb-h/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://signature-products-gmb-h/./node_modules/react-popper/lib/esm/utils.js","webpack://signature-products-gmb-h/./node_modules/react-popper/lib/esm/usePopper.js","webpack://signature-products-gmb-h/./src/components/popover/Popover.tsx","webpack://signature-products-gmb-h/./src/hooks/useHover.tsx","webpack://signature-products-gmb-h/./src/components/popover/PopoverBody.tsx","webpack://signature-products-gmb-h/./src/components/language-switcher/LanguageSwitcherItem.tsx","webpack://signature-products-gmb-h/./src/components/language-switcher/LanguageSwitcher.tsx","webpack://signature-products-gmb-h/./src/hooks/useMainMenu.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/MainMenuItem.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/items/MainMenuCategoryItem.tsx","webpack://signature-products-gmb-h/./src/hooks/useSSR.tsx","webpack://signature-products-gmb-h/./src/components/drawer/Overlay.tsx","webpack://signature-products-gmb-h/./src/hooks/useMeasure.tsx","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://signature-products-gmb-h/./node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js","webpack://signature-products-gmb-h/./node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","webpack://signature-products-gmb-h/./node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","webpack://signature-products-gmb-h/./node_modules/@react-spring/core/dist/react-spring-core.esm.js","webpack://signature-products-gmb-h/./node_modules/@react-spring/web/dist/react-spring-web.esm.js","webpack://signature-products-gmb-h/./src/components/main-menu/MainMenuDropdown.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/dropdowns/MainMenuDropdownItem.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/dropdowns/MainMenuCategoryDropdown.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/MainMenu.tsx","webpack://signature-products-gmb-h/./src/hooks/useDelayed.tsx","webpack://signature-products-gmb-h/./src/components/drawer/Drawer.tsx","webpack://signature-products-gmb-h/./src/hooks/useMultiRef.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/mobile-menu/MobileMenuItem.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/mobile-menu/MobileMenuRootItem.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/mobile-menu/MobileMenu.tsx","webpack://signature-products-gmb-h/./src/components/main-menu/mobile-menu/MobileMenuTrigger.tsx","webpack://signature-products-gmb-h/./src/components/meta/SiteMeta.tsx","webpack://signature-products-gmb-h/./src/components/header/Header.tsx","webpack://signature-products-gmb-h/./src/components/typography/Paragraph.tsx","webpack://signature-products-gmb-h/./src/components/typography/UnorderedList.tsx","webpack://signature-products-gmb-h/./src/components/typography/ListItem.tsx","webpack://signature-products-gmb-h/./src/components/footer/SocialMediaLink.tsx","webpack://signature-products-gmb-h/./src/components/footer/Footer.tsx","webpack://signature-products-gmb-h/./src/hooks/useFooter.tsx","webpack://signature-products-gmb-h/./src/hooks/useLocalStorage.tsx","webpack://signature-products-gmb-h/./src/components/gdpr/Group.tsx","webpack://signature-products-gmb-h/./src/components/gdpr/Notice.tsx","webpack://signature-products-gmb-h/./src/components/layout/Layout.tsx","webpack://signature-products-gmb-h/./node_modules/react-i18next/dist/es/I18nextProvider.js","webpack://signature-products-gmb-h/./gatsby-browser.js","webpack://signature-products-gmb-h/../src/image-utils.ts","webpack://signature-products-gmb-h/../src/components/hooks.ts","webpack://signature-products-gmb-h/../src/components/layout-wrapper.tsx","webpack://signature-products-gmb-h/../src/components/picture.tsx","webpack://signature-products-gmb-h/../src/components/placeholder.tsx","webpack://signature-products-gmb-h/../src/components/main-image.tsx","webpack://signature-products-gmb-h/../src/components/gatsby-image.server.tsx","webpack://signature-products-gmb-h/../src/components/gatsby-image.browser.tsx","webpack://signature-products-gmb-h/../src/components/static-image.server.tsx","webpack://signature-products-gmb-h/../src/components/static-image.tsx","webpack://signature-products-gmb-h/../src/components/later-hydrator.tsx","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-image/gatsby-browser.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-loadable-components-ssr/gatsby-browser.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://signature-products-gmb-h/./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/bb371b604cd58d6bdc41f05f30d23fb7.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-mdx/context.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-mdx/wrap-root-element.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-mdx/gatsby-browser.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-mdx/index.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-mdx/mdx-renderer.js","webpack://signature-products-gmb-h/./node_modules/gatsby-plugin-mdx/loaders/mdx-components.js","webpack://signature-products-gmb-h/./src/components/buttons/Button.tsx","webpack://signature-products-gmb-h/./src/components/cards/Card.tsx","webpack://signature-products-gmb-h/./src/components/images/LocalImage.tsx","webpack://signature-products-gmb-h/./src/components/images/StrapiImage.tsx","webpack://signature-products-gmb-h/./src/components/language-switcher/CircleFlag.tsx","webpack://signature-products-gmb-h/./src/components/link/Link.tsx","webpack://signature-products-gmb-h/./src/components/translation/Translated.tsx","webpack://signature-products-gmb-h/./src/helpers/makePath.ts","webpack://signature-products-gmb-h/./src/hooks/useCategoryTree.tsx","webpack://signature-products-gmb-h/./src/hooks/useLocale.tsx","webpack://signature-products-gmb-h/./src/hooks/usePreferredColorSchema.tsx","webpack://signature-products-gmb-h/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://signature-products-gmb-h/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://signature-products-gmb-h/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://signature-products-gmb-h/./node_modules/invariant/browser.js","webpack://signature-products-gmb-h/./node_modules/lodash/_Symbol.js","webpack://signature-products-gmb-h/./node_modules/lodash/_arrayMap.js","webpack://signature-products-gmb-h/./node_modules/lodash/_asciiToArray.js","webpack://signature-products-gmb-h/./node_modules/lodash/_baseGetTag.js","webpack://signature-products-gmb-h/./node_modules/lodash/_baseSlice.js","webpack://signature-products-gmb-h/./node_modules/lodash/_baseToString.js","webpack://signature-products-gmb-h/./node_modules/lodash/_castSlice.js","webpack://signature-products-gmb-h/./node_modules/lodash/_createCaseFirst.js","webpack://signature-products-gmb-h/./node_modules/lodash/_freeGlobal.js","webpack://signature-products-gmb-h/./node_modules/lodash/_getRawTag.js","webpack://signature-products-gmb-h/./node_modules/lodash/_hasUnicode.js","webpack://signature-products-gmb-h/./node_modules/lodash/_objectToString.js","webpack://signature-products-gmb-h/./node_modules/lodash/_root.js","webpack://signature-products-gmb-h/./node_modules/lodash/_stringToArray.js","webpack://signature-products-gmb-h/./node_modules/lodash/_unicodeToArray.js","webpack://signature-products-gmb-h/./node_modules/lodash/isArray.js","webpack://signature-products-gmb-h/./node_modules/lodash/isObjectLike.js","webpack://signature-products-gmb-h/./node_modules/lodash/isSymbol.js","webpack://signature-products-gmb-h/./node_modules/lodash/toString.js","webpack://signature-products-gmb-h/./node_modules/lodash/upperFirst.js","webpack://signature-products-gmb-h/./node_modules/regenerator-runtime/runtime.js","webpack://signature-products-gmb-h/./node_modules/i18next-http-backend/esm/getFetch.cjs","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://signature-products-gmb-h/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["function _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++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    module.exports = _construct = Reflect.construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  } else {\n    module.exports = _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) setPrototypeOf(instance, Class.prototype);\n      return instance;\n    }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  }\n\n  return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = require(\"regenerator-runtime\");\n","/*!\n * Font Awesome Free 6.0.0 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 2022 Fonticons, Inc.\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 _wrapRegExp() {\n  _wrapRegExp = function _wrapRegExp(re, groups) {\n    return new BabelRegExp(re, void 0, groups);\n  };\n\n  var _super = RegExp.prototype,\n      _groups = new WeakMap();\n\n  function BabelRegExp(re, flags, groups) {\n    var _this = new RegExp(re, flags);\n\n    return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n  }\n\n  function buildGroups(result, re) {\n    var g = _groups.get(re);\n\n    return Object.keys(g).reduce(function (groups, name) {\n      return groups[name] = result[g[name]], groups;\n    }, Object.create(null));\n  }\n\n  return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n    var result = _super.exec.call(this, str);\n\n    return result && (result.groups = buildGroups(result, this)), result;\n  }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n    if (\"string\" == typeof substitution) {\n      var groups = _groups.get(this);\n\n      return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n        return \"$\" + groups[name];\n      }));\n    }\n\n    if (\"function\" == typeof substitution) {\n      var _this = this;\n\n      return _super[Symbol.replace].call(this, str, function () {\n        var args = arguments;\n        return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n      });\n    }\n\n    return _super[Symbol.replace].call(this, str, substitution);\n  }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\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 _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\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 _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return 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 _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\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++) {\n    arr2[i] = arr[i];\n  }\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\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n  mark: noop,\n  measure: noop\n};\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) {}\n\nvar _ref = _WINDOW.navigator || {},\n    _ref$userAgent = _ref.userAgent,\n    userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\n\nvar PRODUCTION = function () {\n  try {\n    return process.env.NODE_ENV === 'production';\n  } catch (e) {\n    return false;\n  }\n}();\n\nvar PREFIX_TO_STYLE = {\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  'fad': 'duotone',\n  'fa-duotone': 'duotone',\n  'fab': 'brands',\n  'fa-brands': 'brands',\n  'fak': 'kit',\n  'fa-kit': 'kit',\n  'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n  'solid': 'fas',\n  'regular': 'far',\n  'light': 'fal',\n  'thin': 'fat',\n  'duotone': 'fad',\n  'brands': 'fab',\n  'kit': 'fak'\n};\nvar PREFIX_TO_LONG_STYLE = {\n  'fab': 'fa-brands',\n  'fad': 'fa-duotone',\n  'fak': 'fa-kit',\n  'fal': 'fa-light',\n  'far': 'fa-regular',\n  'fas': 'fa-solid',\n  'fat': 'fa-thin'\n};\nvar LONG_STYLE_TO_PREFIX = {\n  'fa-brands': 'fab',\n  'fa-duotone': 'fad',\n  'fa-kit': 'fak',\n  'fa-light': 'fal',\n  'fa-regular': 'far',\n  'fa-solid': 'fas',\n  'fa-thin': 'fat'\n};\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa[srltdbk\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n  '900': 'fas',\n  '400': 'far',\n  'normal': 'far',\n  '300': 'fal',\n  '100': 'fat'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n  GROUP: 'duotone-group',\n  SWAP_OPACITY: 'swap-opacity',\n  PRIMARY: 'primary',\n  SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = [].concat(_toConsumableArray(Object.keys(STYLE_TO_PREFIX)), ['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', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n  return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n  return \"w-\".concat(n);\n}));\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n  var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n  if (element) {\n    return element.getAttribute(attr);\n  }\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  // For example <script data-search-pseudo-elements src=\"...\"></script>\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'true') return true;\n  return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n  var attrs = [['data-family-prefix', 'familyPrefix'], ['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(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        attr = _ref2[0],\n        key = _ref2[1];\n\n    var val = coerce(getAttrConfig(attr));\n\n    if (val !== undefined && val !== null) {\n      initial[key] = val;\n    }\n  });\n}\n\nvar _default = {\n  familyPrefix: DEFAULT_FAMILY_PREFIX,\n  styleDefault: 'solid',\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\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_config).forEach(function (key) {\n  Object.defineProperty(config, key, {\n    enumerable: true,\n    set: function set(val) {\n      _config[key] = val;\n\n      _onChangeCb.forEach(function (cb) {\n        return cb(config);\n      });\n    },\n    get: function get() {\n      return _config[key];\n    }\n  });\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\n\nfunction onChange(cb) {\n  _onChangeCb.push(cb);\n\n  return function () {\n    _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n  };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n  size: 16,\n  x: 0,\n  y: 0,\n  rotate: 0,\n  flipX: false,\n  flipY: false\n};\n\nfunction insertCss(css) {\n  if (!css || !IS_DOM) {\n    return;\n  }\n\n  var style = DOCUMENT.createElement('style');\n  style.setAttribute('type', 'text/css');\n  style.innerHTML = css;\n  var headChildren = DOCUMENT.head.childNodes;\n  var beforeChild = null;\n\n  for (var i = headChildren.length - 1; i > -1; i--) {\n    var child = headChildren[i];\n    var tagName = (child.tagName || '').toUpperCase();\n\n    if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n      beforeChild = child;\n    }\n  }\n\n  DOCUMENT.head.insertBefore(style, beforeChild);\n  return css;\n}\n\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\nfunction nextUniqueId() {\n  var size = 12;\n  var id = '';\n\n  while (size-- > 0) {\n    id += idPool[Math.random() * 62 | 0];\n  }\n\n  return id;\n}\n\nfunction toArray(obj) {\n  var array = [];\n\n  for (var i = (obj || []).length >>> 0; i--;) {\n    array[i] = obj[i];\n  }\n\n  return array;\n}\n\nfunction classArray(node) {\n  if (node.classList) {\n    return toArray(node.classList);\n  } else {\n    return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n      return i;\n    });\n  }\n}\n\nfunction htmlEscape(str) {\n  return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\nfunction joinAttributes(attributes) {\n  return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n    return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n  }, '').trim();\n}\n\nfunction joinStyles(styles) {\n  return Object.keys(styles || {}).reduce(function (acc, styleName) {\n    return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n  }, '');\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}\n\nfunction transformForSvg(_ref) {\n  var transform = _ref.transform,\n      containerWidth = _ref.containerWidth,\n      iconWidth = _ref.iconWidth;\n  var outer = {\n    transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n  };\n  var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n  var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n  var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n  var inner = {\n    transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n  };\n  var path = {\n    transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n  };\n  return {\n    outer: outer,\n    inner: inner,\n    path: path\n  };\n}\n\nfunction transformForCss(_ref2) {\n  var transform = _ref2.transform,\n      _ref2$width = _ref2.width,\n      width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n      _ref2$height = _ref2.height,\n      height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n      _ref2$startCentered = _ref2.startCentered,\n      startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n  var val = '';\n\n  if (startCentered && IS_IE) {\n    val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n  } else if (startCentered) {\n    val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n  } else {\n    val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n  }\n\n  val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (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 Solid\\\";\\n  --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n  --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n  --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n  --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\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  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n  left: 50%;\\n  top: 50%;\\n  -webkit-transform: translate(-50%, -50%);\\n          transform: translate(-50%, -50%);\\n  -webkit-transform-origin: center center;\\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  -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n          transform: scale(var(--fa-counter-scale, 0.25));\\n  -webkit-transform-origin: top right;\\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  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: bottom right;\\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  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: bottom left;\\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  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: top right;\\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  -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n          transform: scale(var(--fa-layers-scale, 0.25));\\n  -webkit-transform-origin: top left;\\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(var(--fa-li-width, 2em) * -1);\\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  -webkit-animation-name: fa-beat;\\n          animation-name: fa-beat;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n          animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n  -webkit-animation-name: fa-bounce;\\n          animation-name: fa-bounce;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n  -webkit-animation-name: fa-fade;\\n          animation-name: fa-fade;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n  -webkit-animation-name: fa-beat-fade;\\n          animation-name: fa-beat-fade;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n  -webkit-animation-name: fa-flip;\\n          animation-name: fa-flip;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n          animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n  -webkit-animation-name: fa-shake;\\n          animation-name: fa-shake;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n          animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n  -webkit-animation-name: fa-spin;\\n          animation-name: fa-spin;\\n  -webkit-animation-delay: var(--fa-animation-delay, 0);\\n          animation-delay: var(--fa-animation-delay, 0);\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n          animation-duration: var(--fa-animation-duration, 2s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\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  -webkit-animation-name: fa-spin;\\n          animation-name: fa-spin;\\n  -webkit-animation-direction: var(--fa-animation-direction, normal);\\n          animation-direction: var(--fa-animation-direction, normal);\\n  -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n          animation-duration: var(--fa-animation-duration, 1s);\\n  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n          animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\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    -webkit-animation-delay: -1ms;\\n            animation-delay: -1ms;\\n    -webkit-animation-duration: 1ms;\\n            animation-duration: 1ms;\\n    -webkit-animation-iteration-count: 1;\\n            animation-iteration-count: 1;\\n    transition-delay: 0s;\\n    transition-duration: 0s;\\n  }\\n}\\n@-webkit-keyframes fa-beat {\\n  0%, 90% {\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  45% {\\n    -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n            transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@keyframes fa-beat {\\n  0%, 90% {\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  45% {\\n    -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n            transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@-webkit-keyframes fa-bounce {\\n  0% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\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    -webkit-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            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    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\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    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@keyframes fa-bounce {\\n  0% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\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    -webkit-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            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    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\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    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    -webkit-transform: scale(1, 1) translateY(0);\\n            transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@-webkit-keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n            transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    -webkit-transform: scale(1);\\n            transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n            transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@-webkit-keyframes fa-flip {\\n  50% {\\n    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\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-flip {\\n  50% {\\n    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\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@-webkit-keyframes fa-shake {\\n  0% {\\n    -webkit-transform: rotate(-15deg);\\n            transform: rotate(-15deg);\\n  }\\n  4% {\\n    -webkit-transform: rotate(15deg);\\n            transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    -webkit-transform: rotate(-18deg);\\n            transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    -webkit-transform: rotate(18deg);\\n            transform: rotate(18deg);\\n  }\\n  16% {\\n    -webkit-transform: rotate(-22deg);\\n            transform: rotate(-22deg);\\n  }\\n  20% {\\n    -webkit-transform: rotate(22deg);\\n            transform: rotate(22deg);\\n  }\\n  32% {\\n    -webkit-transform: rotate(-12deg);\\n            transform: rotate(-12deg);\\n  }\\n  36% {\\n    -webkit-transform: rotate(12deg);\\n            transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n}\\n@keyframes fa-shake {\\n  0% {\\n    -webkit-transform: rotate(-15deg);\\n            transform: rotate(-15deg);\\n  }\\n  4% {\\n    -webkit-transform: rotate(15deg);\\n            transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    -webkit-transform: rotate(-18deg);\\n            transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    -webkit-transform: rotate(18deg);\\n            transform: rotate(18deg);\\n  }\\n  16% {\\n    -webkit-transform: rotate(-22deg);\\n            transform: rotate(-22deg);\\n  }\\n  20% {\\n    -webkit-transform: rotate(22deg);\\n            transform: rotate(22deg);\\n  }\\n  32% {\\n    -webkit-transform: rotate(-12deg);\\n            transform: rotate(-12deg);\\n  }\\n  36% {\\n    -webkit-transform: rotate(12deg);\\n            transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n}\\n@-webkit-keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n@keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  -webkit-transform: rotate(90deg);\\n          transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n  -webkit-transform: rotate(180deg);\\n          transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n  -webkit-transform: rotate(270deg);\\n          transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n  -webkit-transform: scale(-1, 1);\\n          transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n  -webkit-transform: scale(1, -1);\\n          transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n  -webkit-transform: scale(-1, -1);\\n          transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n  -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n          transform: rotate(var(--fa-rotate-angle, none));\\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\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n  color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n  var dfp = DEFAULT_FAMILY_PREFIX;\n  var drc = DEFAULT_REPLACEMENT_CLASS;\n  var fp = config.familyPrefix;\n  var rc = config.replacementClass;\n  var s = baseStyles;\n\n  if (fp !== dfp || rc !== drc) {\n    var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n    var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n    var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n    s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n  }\n\n  return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n  if (config.autoAddCss && !_cssInserted) {\n    insertCss(css());\n    _cssInserted = true;\n  }\n}\n\nvar InjectCSS = {\n  mixout: function mixout() {\n    return {\n      dom: {\n        css: css,\n        insertCss: ensureCss\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      beforeDOMElementCreation: function beforeDOMElementCreation() {\n        ensureCss();\n      },\n      beforeI2svg: function beforeI2svg() {\n        ensureCss();\n      }\n    };\n  }\n};\nvar 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];\nvar functions = [];\n\nvar listener = function listener() {\n  DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n  loaded = 1;\n  functions.map(function (fn) {\n    return fn();\n  });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n  loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n  if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready(fn) {\n  if (!IS_DOM) return;\n  loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n  var tag = abstractNodes.tag,\n      _abstractNodes$attrib = abstractNodes.attributes,\n      attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n      _abstractNodes$childr = abstractNodes.children,\n      children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n  if (typeof abstractNodes === 'string') {\n    return htmlEscape(abstractNodes);\n  } else {\n    return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n  }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n  if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n    return {\n      prefix: prefix,\n      iconName: iconName,\n      icon: mapping[prefix][iconName]\n    };\n  }\n}\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\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 * # 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 */\n\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\n  if (initialValue === undefined) {\n    i = 1;\n    result = subject[keys[0]];\n  } else {\n    i = 0;\n    result = initialValue;\n  }\n\n  for (; i < length; i++) {\n    key = keys[i];\n    result = iterator(result, subject[key], key, subject);\n  }\n\n  return result;\n};\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\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\n\nfunction ucs2decode(string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n\n  while (counter < length) {\n    var value = string.charCodeAt(counter++);\n\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      var extra = string.charCodeAt(counter++);\n\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\n  return output;\n}\n\nfunction toHex(unicode) {\n  var decoded = ucs2decode(unicode);\n  return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\n\nfunction codePointAt(string, index) {\n  var size = string.length;\n  var first = string.charCodeAt(index);\n  var second;\n\n  if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n    second = string.charCodeAt(index + 1);\n\n    if (second >= 0xDC00 && second <= 0xDFFF) {\n      return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n    }\n  }\n\n  return first;\n}\n\nfunction normalizeIcons(icons) {\n  return Object.keys(icons).reduce(function (acc, iconName) {\n    var icon = icons[iconName];\n    var expanded = !!icon.icon;\n\n    if (expanded) {\n      acc[icon.iconName] = icon.icon;\n    } else {\n      acc[iconName] = icon;\n    }\n\n    return acc;\n  }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var _params$skipHooks = params.skipHooks,\n      skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n  var normalized = normalizeIcons(icons);\n\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   * 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\n\n  if (prefix === 'fas') {\n    defineIcons('fa', icons);\n  }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n  d1: 1,\n  d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n  cls1: 1,\n  d1: 2,\n  cls2: 3,\n  d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n  cls1: 1,\n  d1: 2\n})];\nvar styles = namespace.styles,\n    shims = namespace.shims;\nvar LONG_STYLE = Object.values(PREFIX_TO_LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = Object.keys(PREFIX_TO_STYLE);\n\nfunction isReserved(name) {\n  return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(familyPrefix, cls) {\n  var parts = cls.split('-');\n  var prefix = parts[0];\n  var iconName = parts.slice(1).join('-');\n\n  if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n    return iconName;\n  } else {\n    return null;\n  }\n}\n\nvar build = function build() {\n  var lookup = function lookup(reducer) {\n    return reduce(styles, function (o, style, prefix) {\n      o[prefix] = reduce(style, reducer, {});\n      return o;\n    }, {});\n  };\n\n  _byUnicode = lookup(function (acc, icon, iconName) {\n    if (icon[3]) {\n      acc[icon[3]] = iconName;\n    }\n\n    if (icon[2]) {\n      var aliases = icon[2].filter(function (a) {\n        return typeof a === 'number';\n      });\n      aliases.forEach(function (alias) {\n        acc[alias.toString(16)] = iconName;\n      });\n    }\n\n    return acc;\n  });\n  _byLigature = lookup(function (acc, icon, iconName) {\n    acc[iconName] = iconName;\n\n    if (icon[2]) {\n      var aliases = icon[2].filter(function (a) {\n        return typeof a === 'string';\n      });\n      aliases.forEach(function (alias) {\n        acc[alias] = iconName;\n      });\n    }\n\n    return acc;\n  });\n  _byAlias = lookup(function (acc, icon, iconName) {\n    var aliases = icon[2];\n    acc[iconName] = iconName;\n    aliases.forEach(function (alias) {\n      acc[alias] = iconName;\n    });\n    return acc;\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\n  var hasRegular = 'far' in styles || config.autoFetchSvg;\n  var shimLookups = reduce(shims, function (acc, shim) {\n    var maybeNameMaybeUnicode = shim[0];\n    var prefix = shim[1];\n    var iconName = shim[2];\n\n    if (prefix === 'far' && !hasRegular) {\n      prefix = 'fas';\n    }\n\n    if (typeof maybeNameMaybeUnicode === 'string') {\n      acc.names[maybeNameMaybeUnicode] = {\n        prefix: prefix,\n        iconName: iconName\n      };\n    }\n\n    if (typeof maybeNameMaybeUnicode === 'number') {\n      acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n        prefix: prefix,\n        iconName: iconName\n      };\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};\n\nonChange(function (c) {\n  _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault);\n});\nbuild();\n\nfunction byUnicode(prefix, unicode) {\n  return (_byUnicode[prefix] || {})[unicode];\n}\n\nfunction byLigature(prefix, ligature) {\n  return (_byLigature[prefix] || {})[ligature];\n}\n\nfunction byAlias(prefix, alias) {\n  return (_byAlias[prefix] || {})[alias];\n}\n\nfunction byOldName(name) {\n  return _byOldName[name] || {\n    prefix: null,\n    iconName: null\n  };\n}\n\nfunction byOldUnicode(unicode) {\n  var oldUnicode = _byOldUnicode[unicode];\n  var newUnicode = byUnicode('fas', unicode);\n  return oldUnicode || (newUnicode ? {\n    prefix: 'fas',\n    iconName: newUnicode\n  } : null) || {\n    prefix: null,\n    iconName: null\n  };\n}\n\nfunction getDefaultUsablePrefix() {\n  return _defaultUsablePrefix;\n}\n\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n  return {\n    prefix: null,\n    iconName: null,\n    rest: []\n  };\n};\n\nfunction getCanonicalPrefix(styleOrPrefix) {\n  var style = PREFIX_TO_STYLE[styleOrPrefix];\n  var prefix = STYLE_TO_PREFIX[styleOrPrefix] || STYLE_TO_PREFIX[style];\n  var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n  return prefix || defined || null;\n}\n\nfunction getCanonicalIcon(values) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$skipLookups = params.skipLookups,\n      skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n  var givenPrefix = null;\n  var canonical = values.reduce(function (acc, cls) {\n    var iconName = getIconName(config.familyPrefix, cls);\n\n    if (styles[cls]) {\n      cls = LONG_STYLE.includes(cls) ? LONG_STYLE_TO_PREFIX[cls] : cls;\n      givenPrefix = cls;\n      acc.prefix = cls;\n    } else if (PREFIXES.indexOf(cls) > -1) {\n      givenPrefix = cls;\n      acc.prefix = getCanonicalPrefix(cls);\n    } else if (iconName) {\n      acc.iconName = iconName;\n    } else if (cls !== config.replacementClass) {\n      acc.rest.push(cls);\n    }\n\n    if (!skipLookups && acc.prefix && acc.iconName) {\n      var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n      var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n      if (shim.prefix) {\n        givenPrefix = null;\n      }\n\n      acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n      acc.prefix = shim.prefix || acc.prefix;\n\n      if (acc.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        acc.prefix = 'fas';\n      }\n    }\n\n    return acc;\n  }, emptyCanonicalIcon());\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\n  return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n  function Library() {\n    _classCallCheck(this, Library);\n\n    this.definitions = {};\n  }\n\n  _createClass(Library, [{\n    key: \"add\",\n    value: function add() {\n      var _this = this;\n\n      for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n        definitions[_key] = arguments[_key];\n      }\n\n      var additions = definitions.reduce(this._pullDefinitions, {});\n      Object.keys(additions).forEach(function (key) {\n        _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n        defineIcons(key, additions[key]);\n        var longPrefix = PREFIX_TO_LONG_STYLE[key];\n        if (longPrefix) defineIcons(longPrefix, additions[key]);\n        build();\n      });\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.definitions = {};\n    }\n  }, {\n    key: \"_pullDefinitions\",\n    value: function _pullDefinitions(additions, definition) {\n      var normalized = definition.prefix && definition.iconName && definition.icon ? {\n        0: definition\n      } : definition;\n      Object.keys(normalized).map(function (key) {\n        var _normalized$key = normalized[key],\n            prefix = _normalized$key.prefix,\n            iconName = _normalized$key.iconName,\n            icon = _normalized$key.icon;\n        var aliases = icon[2];\n        if (!additions[prefix]) additions[prefix] = {};\n\n        if (aliases.length > 0) {\n          aliases.forEach(function (alias) {\n            if (typeof alias === 'string') {\n              additions[prefix][alias] = icon;\n            }\n          });\n        }\n\n        additions[prefix][iconName] = icon;\n      });\n      return additions;\n    }\n  }]);\n\n  return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\n\nfunction registerPlugins(nextPlugins, _ref) {\n  var obj = _ref.mixoutsTo;\n  _plugins = nextPlugins;\n  _hooks = {};\n  Object.keys(providers).forEach(function (k) {\n    if (defaultProviderKeys.indexOf(k) === -1) {\n      delete providers[k];\n    }\n  });\n\n  _plugins.forEach(function (plugin) {\n    var mixout = plugin.mixout ? plugin.mixout() : {};\n    Object.keys(mixout).forEach(function (tk) {\n      if (typeof mixout[tk] === 'function') {\n        obj[tk] = mixout[tk];\n      }\n\n      if (_typeof(mixout[tk]) === 'object') {\n        Object.keys(mixout[tk]).forEach(function (sk) {\n          if (!obj[tk]) {\n            obj[tk] = {};\n          }\n\n          obj[tk][sk] = mixout[tk][sk];\n        });\n      }\n    });\n\n    if (plugin.hooks) {\n      var hooks = plugin.hooks();\n      Object.keys(hooks).forEach(function (hook) {\n        if (!_hooks[hook]) {\n          _hooks[hook] = [];\n        }\n\n        _hooks[hook].push(hooks[hook]);\n      });\n    }\n\n    if (plugin.provides) {\n      plugin.provides(providers);\n    }\n  });\n\n  return obj;\n}\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\n  var hookFns = _hooks[hook] || [];\n  hookFns.forEach(function (hookFn) {\n    accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n  });\n  return accumulator;\n}\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\n  var hookFns = _hooks[hook] || [];\n  hookFns.forEach(function (hookFn) {\n    hookFn.apply(null, args);\n  });\n  return undefined;\n}\n\nfunction callProvided() {\n  var hook = arguments[0];\n  var 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\n  var iconName = iconLookup.iconName;\n  var 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}\n\nvar library = new Library();\n\nvar noAuto = function noAuto() {\n  config.autoReplaceSvg = false;\n  config.observeMutations = false;\n  callHooks('noAuto');\n};\n\nvar dom = {\n  i2svg: function i2svg() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (IS_DOM) {\n      callHooks('beforeI2svg', params);\n      callProvided('pseudoElements2svg', params);\n      return callProvided('i2svg', params);\n    } else {\n      return Promise.reject('Operation requires a DOM of some kind.');\n    }\n  },\n  watch: function watch() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n    if (config.autoReplaceSvg === false) {\n      config.autoReplaceSvg = true;\n    }\n\n    config.observeMutations = true;\n    domready(function () {\n      autoReplace({\n        autoReplaceSvgRoot: autoReplaceSvgRoot\n      });\n      callHooks('watch', params);\n    });\n  }\n};\nvar parse = {\n  icon: function icon(_icon) {\n    if (_icon === null) {\n      return null;\n    }\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\n    if (Array.isArray(_icon) && _icon.length === 2) {\n      var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n      var prefix = getCanonicalPrefix(_icon[0]);\n      return {\n        prefix: prefix,\n        iconName: byAlias(prefix, iconName) || iconName\n      };\n    }\n\n    if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.familyPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n      var 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\n    if (typeof _icon === 'string') {\n      var _prefix = getDefaultUsablePrefix();\n\n      return {\n        prefix: _prefix,\n        iconName: byAlias(_prefix, _icon) || _icon\n      };\n    }\n  }\n};\nvar api = {\n  noAuto: noAuto,\n  config: config,\n  dom: dom,\n  parse: parse,\n  library: library,\n  findIconDefinition: findIconDefinition,\n  toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n      autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\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 get() {\n      return val.abstract.map(function (a) {\n        return toHtml(a);\n      });\n    }\n  });\n  Object.defineProperty(val, 'node', {\n    get: function get() {\n      if (!IS_DOM) return;\n      var container = DOCUMENT.createElement('div');\n      container.innerHTML = val.html;\n      return container.children;\n    }\n  });\n  return val;\n}\n\nfunction asIcon(_ref) {\n  var children = _ref.children,\n      main = _ref.main,\n      mask = _ref.mask,\n      attributes = _ref.attributes,\n      styles = _ref.styles,\n      transform = _ref.transform;\n\n  if (transformIsMeaningful(transform) && main.found && !mask.found) {\n    var width = main.width,\n        height = main.height;\n    var 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\n  return [{\n    tag: 'svg',\n    attributes: attributes,\n    children: children\n  }];\n}\n\nfunction asSymbol(_ref) {\n  var prefix = _ref.prefix,\n      iconName = _ref.iconName,\n      children = _ref.children,\n      attributes = _ref.attributes,\n      symbol = _ref.symbol;\n  var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").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: id\n      }),\n      children: children\n    }]\n  }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n  var _params$icons = params.icons,\n      main = _params$icons.main,\n      mask = _params$icons.mask,\n      prefix = params.prefix,\n      iconName = params.iconName,\n      transform = params.transform,\n      symbol = params.symbol,\n      title = params.title,\n      maskId = params.maskId,\n      titleId = params.titleId,\n      extra = params.extra,\n      _params$watchable = params.watchable,\n      watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n  var _ref = mask.found ? mask : main,\n      width = _ref.width,\n      height = _ref.height;\n\n  var isUploadedIcon = prefix === 'fak';\n  var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n    return extra.classes.indexOf(c) === -1;\n  }).filter(function (c) {\n    return c !== '' || !!c;\n  }).concat(extra.classes).join(' ');\n  var 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  var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n    width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n  } : {};\n\n  if (watchable) {\n    content.attributes[DATA_FA_I2SVG] = '';\n  }\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\n  var args = _objectSpread2(_objectSpread2({}, content), {}, {\n    prefix: prefix,\n    iconName: iconName,\n    main: main,\n    mask: mask,\n    maskId: maskId,\n    transform: transform,\n    symbol: symbol,\n    styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n  });\n\n  var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n    children: [],\n    attributes: {}\n  } : callProvided('generateAbstractIcon', args) || {\n    children: [],\n    attributes: {}\n  },\n      children = _ref2.children,\n      attributes = _ref2.attributes;\n\n  args.children = children;\n  args.attributes = attributes;\n\n  if (symbol) {\n    return asSymbol(args);\n  } else {\n    return asIcon(args);\n  }\n}\n\nfunction makeLayersTextAbstract(params) {\n  var content = params.content,\n      width = params.width,\n      height = params.height,\n      transform = params.transform,\n      title = params.title,\n      extra = params.extra,\n      _params$watchable2 = params.watchable,\n      watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n  var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n    'title': title\n  } : {}), {}, {\n    'class': extra.classes.join(' ')\n  });\n\n  if (watchable) {\n    attributes[DATA_FA_I2SVG] = '';\n  }\n\n  var styles = _objectSpread2({}, extra.styles);\n\n  if (transformIsMeaningful(transform)) {\n    styles['transform'] = transformForCss({\n      transform: transform,\n      startCentered: true,\n      width: width,\n      height: height\n    });\n    styles['-webkit-transform'] = styles['transform'];\n  }\n\n  var styleString = joinStyles(styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n\n  return val;\n}\n\nfunction makeLayersCounterAbstract(params) {\n  var content = params.content,\n      title = params.title,\n      extra = params.extra;\n\n  var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n    'title': title\n  } : {}), {}, {\n    'class': extra.classes.join(' ')\n  });\n\n  var styleString = joinStyles(extra.styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n\n  return val;\n}\n\nvar styles$1 = namespace.styles;\n\nfunction asFoundIcon(icon) {\n  var width = icon[0];\n  var height = icon[1];\n\n  var _icon$slice = icon.slice(4),\n      _icon$slice2 = _slicedToArray(_icon$slice, 1),\n      vectorData = _icon$slice2[0];\n\n  var element = null;\n\n  if (Array.isArray(vectorData)) {\n    element = {\n      tag: 'g',\n      attributes: {\n        class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n      },\n      children: [{\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n          fill: 'currentColor',\n          d: vectorData[0]\n        }\n      }, {\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.familyPrefix, \"-\").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\n  return {\n    found: true,\n    width: width,\n    height: height,\n    icon: element\n  };\n}\n\nvar missingIconResolutionMixin = {\n  found: false,\n  width: 512,\n  height: 512\n};\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}\n\nfunction findIcon(iconName, prefix) {\n  var givenPrefix = prefix;\n\n  if (prefix === 'fa' && config.styleDefault !== null) {\n    prefix = getDefaultUsablePrefix();\n  }\n\n  return new Promise(function (resolve, reject) {\n    var val = {\n      found: false,\n      width: 512,\n      height: 512,\n      icon: callProvided('missingIconAbstract') || {}\n    };\n\n    if (givenPrefix === 'fa') {\n      var shim = byOldName(iconName) || {};\n      iconName = shim.iconName || iconName;\n      prefix = shim.prefix || prefix;\n    }\n\n    if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n      var icon = styles$1[prefix][iconName];\n      return resolve(asFoundIcon(icon));\n    }\n\n    maybeNotifyMissing(iconName, prefix);\n    resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n      icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n    }));\n  });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n  mark: noop$1,\n  measure: noop$1\n};\nvar preamble = \"FA \\\"6.0.0\\\"\";\n\nvar begin = function begin(name) {\n  p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n  return function () {\n    return end(name);\n  };\n};\n\nvar end = function end(name) {\n  p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n  p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n  begin: begin,\n  end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n  var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n  return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n  var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n  var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n  return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n  return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n  if (config.autoReplaceSvg === true) {\n    return mutators.replace;\n  }\n\n  var mutator = mutators[config.autoReplaceSvg];\n  return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n  return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n  return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$ceFn = params.ceFn,\n      ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n  if (typeof abstractObj === 'string') {\n    return DOCUMENT.createTextNode(abstractObj);\n  }\n\n  var tag = ceFn(abstractObj.tag);\n  Object.keys(abstractObj.attributes || []).forEach(function (key) {\n    tag.setAttribute(key, abstractObj.attributes[key]);\n  });\n  var children = abstractObj.children || [];\n  children.forEach(function (child) {\n    tag.appendChild(convertSVG(child, {\n      ceFn: ceFn\n    }));\n  });\n  return tag;\n}\n\nfunction nodeAsComment(node) {\n  var comment = \" \".concat(node.outerHTML, \" \");\n  /* BEGIN.ATTRIBUTION */\n\n  comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n  /* END.ATTRIBUTION */\n\n  return comment;\n}\n\nvar mutators = {\n  replace: function replace(mutation) {\n    var node = mutation[0];\n\n    if (node.parentNode) {\n      mutation[1].forEach(function (abstract) {\n        node.parentNode.insertBefore(convertSVG(abstract), node);\n      });\n\n      if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n        var comment = DOCUMENT.createComment(nodeAsComment(node));\n        node.parentNode.replaceChild(comment, node);\n      } else {\n        node.remove();\n      }\n    }\n  },\n  nest: function nest(mutation) {\n    var node = mutation[0];\n    var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n    // Short-circuit to the standard replacement\n\n    if (~classArray(node).indexOf(config.replacementClass)) {\n      return mutators.replace(mutation);\n    }\n\n    var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n    delete abstract[0].attributes.id;\n\n    if (abstract[0].attributes.class) {\n      var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n        if (cls === config.replacementClass || cls.match(forSvg)) {\n          acc.toSvg.push(cls);\n        } else {\n          acc.toNode.push(cls);\n        }\n\n        return acc;\n      }, {\n        toNode: [],\n        toSvg: []\n      });\n      abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n      if (splitClasses.toNode.length === 0) {\n        node.removeAttribute('class');\n      } else {\n        node.setAttribute('class', splitClasses.toNode.join(' '));\n      }\n    }\n\n    var newInnerHTML = abstract.map(function (a) {\n      return toHtml(a);\n    }).join('\\n');\n    node.setAttribute(DATA_FA_I2SVG, '');\n    node.innerHTML = newInnerHTML;\n  }\n};\n\nfunction performOperationSync(op) {\n  op();\n}\n\nfunction perform(mutations, callback) {\n  var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n  if (mutations.length === 0) {\n    callbackFunction();\n  } else {\n    var frame = performOperationSync;\n\n    if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n      frame = WINDOW.requestAnimationFrame || performOperationSync;\n    }\n\n    frame(function () {\n      var mutator = getMutator();\n      var mark = perf.begin('mutate');\n      mutations.map(mutator);\n      mark();\n      callbackFunction();\n    });\n  }\n}\n\nvar disabled = false;\n\nfunction disableObservation() {\n  disabled = true;\n}\n\nfunction enableObservation() {\n  disabled = false;\n}\n\nvar mo = null;\n\nfunction observe(options) {\n  if (!MUTATION_OBSERVER) {\n    return;\n  }\n\n  if (!config.observeMutations) {\n    return;\n  }\n\n  var _options$treeCallback = options.treeCallback,\n      treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n      _options$nodeCallback = options.nodeCallback,\n      nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n      _options$pseudoElemen = options.pseudoElementsCallback,\n      pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n      _options$observeMutat = options.observeMutationsRoot,\n      observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n  mo = new MUTATION_OBSERVER(function (objects) {\n    if (disabled) return;\n    var defaultPrefix = getDefaultUsablePrefix();\n    toArray(objects).forEach(function (mutationRecord) {\n      if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n        if (config.searchPseudoElements) {\n          pseudoElementsCallback(mutationRecord.target);\n        }\n\n        treeCallback(mutationRecord.target);\n      }\n\n      if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n        pseudoElementsCallback(mutationRecord.target.parentNode);\n      }\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          var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n              prefix = _getCanonicalIcon.prefix,\n              iconName = _getCanonicalIcon.iconName;\n\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}\n\nfunction disconnect() {\n  if (!mo) return;\n  mo.disconnect();\n}\n\nfunction styleParser(node) {\n  var style = node.getAttribute('style');\n  var val = [];\n\n  if (style) {\n    val = style.split(';').reduce(function (acc, style) {\n      var styles = style.split(':');\n      var prop = styles[0];\n      var value = styles.slice(1);\n\n      if (prop && value.length > 0) {\n        acc[prop] = value.join(':').trim();\n      }\n\n      return acc;\n    }, {});\n  }\n\n  return val;\n}\n\nfunction classParser(node) {\n  var existingPrefix = node.getAttribute('data-prefix');\n  var existingIconName = node.getAttribute('data-icon');\n  var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n  var val = getCanonicalIcon(classArray(node));\n\n  if (!val.prefix) {\n    val.prefix = getDefaultUsablePrefix();\n  }\n\n  if (existingPrefix && existingIconName) {\n    val.prefix = existingPrefix;\n    val.iconName = existingIconName;\n  }\n\n  if (val.iconName && val.prefix) {\n    return val;\n  }\n\n  if (val.prefix && innerText.length > 0) {\n    val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n  }\n\n  return val;\n}\n\nfunction attributesParser(node) {\n  var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n    if (acc.name !== 'class' && acc.name !== 'style') {\n      acc[attr.name] = attr.value;\n    }\n\n    return acc;\n  }, {});\n  var title = node.getAttribute('title');\n  var titleId = node.getAttribute('data-fa-title-id');\n\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\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}\n\nfunction parseMeta(node) {\n  var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    styleParser: true\n  };\n\n  var _classParser = classParser(node),\n      iconName = _classParser.iconName,\n      prefix = _classParser.prefix,\n      extraClasses = _classParser.rest;\n\n  var extraAttributes = attributesParser(node);\n  var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n  var extraStyles = parser.styleParser ? styleParser(node) : [];\n  return _objectSpread2({\n    iconName: iconName,\n    title: node.getAttribute('title'),\n    titleId: node.getAttribute('data-fa-title-id'),\n    prefix: 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\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n  var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n    styleParser: false\n  }) : parseMeta(node);\n\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}\n\nfunction onTree(root) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  if (!IS_DOM) return Promise.resolve();\n  var htmlClassList = DOCUMENT.documentElement.classList;\n\n  var hclAdd = function hclAdd(suffix) {\n    return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n\n  var hclRemove = function hclRemove(suffix) {\n    return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n\n  var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$2);\n  var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n    return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n  })).join(', ');\n\n  if (prefixesDomQuery.length === 0) {\n    return Promise.resolve();\n  }\n\n  var candidates = [];\n\n  try {\n    candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n  } catch (e) {// noop\n  }\n\n  if (candidates.length > 0) {\n    hclAdd('pending');\n    hclRemove('complete');\n  } else {\n    return Promise.resolve();\n  }\n\n  var mark = perf.begin('onTree');\n  var mutations = candidates.reduce(function (acc, node) {\n    try {\n      var mutation = generateMutation(node);\n\n      if (mutation) {\n        acc.push(mutation);\n      }\n    } catch (e) {\n      if (!PRODUCTION) {\n        if (e.name === 'MissingIcon') {\n          console.error(e);\n        }\n      }\n    }\n\n    return acc;\n  }, []);\n  return new Promise(function (resolve, reject) {\n    Promise.all(mutations).then(function (resolvedMutations) {\n      perform(resolvedMutations, function () {\n        hclAdd('active');\n        hclAdd('complete');\n        hclRemove('pending');\n        if (typeof callback === 'function') callback();\n        mark();\n        resolve();\n      });\n    }).catch(function (e) {\n      mark();\n      reject(e);\n    });\n  });\n}\n\nfunction onNode(node) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  generateMutation(node).then(function (mutation) {\n    if (mutation) {\n      perform([mutation], callback);\n    }\n  });\n}\n\nfunction resolveIcons(next) {\n  return function (maybeIconDefinition) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n    var mask = params.mask;\n\n    if (mask) {\n      mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n    }\n\n    return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n      mask: mask\n    }));\n  };\n}\n\nvar render = function render(iconDefinition) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$transform = params.transform,\n      transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n      _params$symbol = params.symbol,\n      symbol = _params$symbol === void 0 ? false : _params$symbol,\n      _params$mask = params.mask,\n      mask = _params$mask === void 0 ? null : _params$mask,\n      _params$maskId = params.maskId,\n      maskId = _params$maskId === void 0 ? null : _params$maskId,\n      _params$title = params.title,\n      title = _params$title === void 0 ? null : _params$title,\n      _params$titleId = params.titleId,\n      titleId = _params$titleId === void 0 ? null : _params$titleId,\n      _params$classes = params.classes,\n      classes = _params$classes === void 0 ? [] : _params$classes,\n      _params$attributes = params.attributes,\n      attributes = _params$attributes === void 0 ? {} : _params$attributes,\n      _params$styles = params.styles,\n      styles = _params$styles === void 0 ? {} : _params$styles;\n  if (!iconDefinition) return;\n  var prefix = iconDefinition.prefix,\n      iconName = iconDefinition.iconName,\n      icon = iconDefinition.icon;\n  return domVariants(_objectSpread2({\n    type: 'icon'\n  }, iconDefinition), function () {\n    callHooks('beforeDOMElementCreation', {\n      iconDefinition: iconDefinition,\n      params: params\n    });\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\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: prefix,\n      iconName: iconName,\n      transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n      symbol: symbol,\n      title: title,\n      maskId: maskId,\n      titleId: titleId,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: classes\n      }\n    });\n  });\n};\n\nvar ReplaceElements = {\n  mixout: function mixout() {\n    return {\n      icon: resolveIcons(render)\n    };\n  },\n  hooks: function hooks() {\n    return {\n      mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n        accumulator.treeCallback = onTree;\n        accumulator.nodeCallback = onNode;\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers$$1) {\n    providers$$1.i2svg = function (params) {\n      var _params$node = params.node,\n          node = _params$node === void 0 ? DOCUMENT : _params$node,\n          _params$callback = params.callback,\n          callback = _params$callback === void 0 ? function () {} : _params$callback;\n      return onTree(node, callback);\n    };\n\n    providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n      var iconName = nodeMeta.iconName,\n          title = nodeMeta.title,\n          titleId = nodeMeta.titleId,\n          prefix = nodeMeta.prefix,\n          transform = nodeMeta.transform,\n          symbol = nodeMeta.symbol,\n          mask = nodeMeta.mask,\n          maskId = nodeMeta.maskId,\n          extra = nodeMeta.extra;\n      return new Promise(function (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(function (_ref) {\n          var _ref2 = _slicedToArray(_ref, 2),\n              main = _ref2[0],\n              mask = _ref2[1];\n\n          resolve([node, makeInlineSvgAbstract({\n            icons: {\n              main: main,\n              mask: mask\n            },\n            prefix: prefix,\n            iconName: iconName,\n            transform: transform,\n            symbol: symbol,\n            maskId: maskId,\n            title: title,\n            titleId: titleId,\n            extra: extra,\n            watchable: true\n          })]);\n        }).catch(reject);\n      });\n    };\n\n    providers$$1.generateAbstractIcon = function (_ref3) {\n      var children = _ref3.children,\n          attributes = _ref3.attributes,\n          main = _ref3.main,\n          transform = _ref3.transform,\n          styles = _ref3.styles;\n      var styleString = joinStyles(styles);\n\n      if (styleString.length > 0) {\n        attributes['style'] = styleString;\n      }\n\n      var nextChild;\n\n      if (transformIsMeaningful(transform)) {\n        nextChild = callProvided('generateAbstractTransformGrouping', {\n          main: main,\n          transform: transform,\n          containerWidth: main.width,\n          iconWidth: main.width\n        });\n      }\n\n      children.push(nextChild || main.icon);\n      return {\n        children: children,\n        attributes: attributes\n      };\n    };\n  }\n};\nvar Layers = {\n  mixout: function mixout() {\n    return {\n      layer: function layer(assembler) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$classes = params.classes,\n            classes = _params$classes === void 0 ? [] : _params$classes;\n        return domVariants({\n          type: 'layer'\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            assembler: assembler,\n            params: params\n          });\n          var children = [];\n          assembler(function (args) {\n            Array.isArray(args) ? args.map(function (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.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n            },\n            children: children\n          }];\n        });\n      }\n    };\n  }\n};\nvar LayersCounter = {\n  mixout: function mixout() {\n    return {\n      counter: function counter(content) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$title = params.title,\n            title = _params$title === void 0 ? null : _params$title,\n            _params$classes = params.classes,\n            classes = _params$classes === void 0 ? [] : _params$classes,\n            _params$attributes = params.attributes,\n            attributes = _params$attributes === void 0 ? {} : _params$attributes,\n            _params$styles = params.styles,\n            styles = _params$styles === void 0 ? {} : _params$styles;\n        return domVariants({\n          type: 'counter',\n          content: content\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            content: content,\n            params: params\n          });\n          return makeLayersCounterAbstract({\n            content: content.toString(),\n            title: title,\n            extra: {\n              attributes: attributes,\n              styles: styles,\n              classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n            }\n          });\n        });\n      }\n    };\n  }\n};\nvar LayersText = {\n  mixout: function mixout() {\n    return {\n      text: function text(content) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$transform = params.transform,\n            transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n            _params$title = params.title,\n            title = _params$title === void 0 ? null : _params$title,\n            _params$classes = params.classes,\n            classes = _params$classes === void 0 ? [] : _params$classes,\n            _params$attributes = params.attributes,\n            attributes = _params$attributes === void 0 ? {} : _params$attributes,\n            _params$styles = params.styles,\n            styles = _params$styles === void 0 ? {} : _params$styles;\n        return domVariants({\n          type: 'text',\n          content: content\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            content: content,\n            params: params\n          });\n          return makeLayersTextAbstract({\n            content: content,\n            transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n            title: title,\n            extra: {\n              attributes: attributes,\n              styles: styles,\n              classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n            }\n          });\n        });\n      }\n    };\n  },\n  provides: function provides(providers$$1) {\n    providers$$1.generateLayersText = function (node, nodeMeta) {\n      var title = nodeMeta.title,\n          transform = nodeMeta.transform,\n          extra = nodeMeta.extra;\n      var width = null;\n      var height = null;\n\n      if (IS_IE) {\n        var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n        var boundingClientRect = node.getBoundingClientRect();\n        width = boundingClientRect.width / computedFontSize;\n        height = boundingClientRect.height / computedFontSize;\n      }\n\n      if (config.autoA11y && !title) {\n        extra.attributes['aria-hidden'] = 'true';\n      }\n\n      return Promise.resolve([node, makeLayersTextAbstract({\n        content: node.innerHTML,\n        width: width,\n        height: height,\n        transform: transform,\n        title: title,\n        extra: extra,\n        watchable: true\n      })]);\n    };\n  }\n};\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\n\nfunction hexValueFromContent(content) {\n  var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n  var codePoint = codePointAt(cleaned, 0);\n  var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n  var 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}\n\nfunction replaceForPosition(node, position) {\n  var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n  return new Promise(function (resolve, reject) {\n    if (node.getAttribute(pendingAttribute) !== null) {\n      // This node is already being processed\n      return resolve();\n    }\n\n    var children = toArray(node.children);\n    var alreadyProcessedPseudoElement = children.filter(function (c) {\n      return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n    })[0];\n    var styles = WINDOW.getComputedStyle(node, position);\n    var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n    var fontWeight = styles.getPropertyValue('font-weight');\n    var content = styles.getPropertyValue('content');\n\n    if (alreadyProcessedPseudoElement && !fontFamily) {\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 (fontFamily && content !== 'none' && content !== '') {\n      var _content = styles.getPropertyValue('content');\n\n      var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n\n      var _hexValueFromContent = hexValueFromContent(_content),\n          hexValue = _hexValueFromContent.value,\n          isSecondary = _hexValueFromContent.isSecondary;\n\n      var isV4 = fontFamily[0].startsWith('FontAwesome');\n      var iconName = byUnicode(prefix, hexValue);\n      var iconIdentifier = iconName;\n\n      if (isV4) {\n        var iconName4 = byOldUnicode(hexValue);\n\n        if (iconName4.iconName && iconName4.prefix) {\n          iconName = iconName4.iconName;\n          prefix = iconName4.prefix;\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\n\n      if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n        node.setAttribute(pendingAttribute, iconIdentifier);\n\n        if (alreadyProcessedPseudoElement) {\n          // Delete the old one, since we're replacing it with a new one\n          node.removeChild(alreadyProcessedPseudoElement);\n        }\n\n        var meta = blankMeta();\n        var extra = meta.extra;\n        extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n        findIcon(iconName, prefix).then(function (main) {\n          var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n            icons: {\n              main: main,\n              mask: emptyCanonicalIcon()\n            },\n            prefix: prefix,\n            iconName: iconIdentifier,\n            extra: extra,\n            watchable: true\n          }));\n          var element = DOCUMENT.createElement('svg');\n\n          if (position === '::before') {\n            node.insertBefore(element, node.firstChild);\n          } else {\n            node.appendChild(element);\n          }\n\n          element.outerHTML = abstract.map(function (a) {\n            return toHtml(a);\n          }).join('\\n');\n          node.removeAttribute(pendingAttribute);\n          resolve();\n        }).catch(reject);\n      } else {\n        resolve();\n      }\n    } else {\n      resolve();\n    }\n  });\n}\n\nfunction replace(node) {\n  return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\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}\n\nfunction searchPseudoElements(root) {\n  if (!IS_DOM) return;\n  return new Promise(function (resolve, reject) {\n    var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n    var end = perf.begin('searchPseudoElements');\n    disableObservation();\n    Promise.all(operations).then(function () {\n      end();\n      enableObservation();\n      resolve();\n    }).catch(function () {\n      end();\n      enableObservation();\n      reject();\n    });\n  });\n}\n\nvar PseudoElements = {\n  hooks: function hooks() {\n    return {\n      mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n        accumulator.pseudoElementsCallback = searchPseudoElements;\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers$$1) {\n    providers$$1.pseudoElements2svg = function (params) {\n      var _params$node = params.node,\n          node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n      if (config.searchPseudoElements) {\n        searchPseudoElements(node);\n      }\n    };\n  }\n};\nvar _unwatched = false;\nvar MutationObserver$1 = {\n  mixout: function mixout() {\n    return {\n      dom: {\n        unwatch: function unwatch() {\n          disableObservation();\n          _unwatched = true;\n        }\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      bootstrap: function bootstrap() {\n        observe(chainHooks('mutationObserverCallbacks', {}));\n      },\n      noAuto: function noAuto() {\n        disconnect();\n      },\n      watch: function watch(params) {\n        var observeMutationsRoot = params.observeMutationsRoot;\n\n        if (_unwatched) {\n          enableObservation();\n        } else {\n          observe(chainHooks('mutationObserverCallbacks', {\n            observeMutationsRoot: observeMutationsRoot\n          }));\n        }\n      }\n    };\n  }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n  var 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(function (acc, n) {\n    var parts = n.toLowerCase().split('-');\n    var first = parts[0];\n    var rest = parts.slice(1).join('-');\n\n    if (first && rest === 'h') {\n      acc.flipX = true;\n      return acc;\n    }\n\n    if (first && rest === 'v') {\n      acc.flipY = true;\n      return acc;\n    }\n\n    rest = parseFloat(rest);\n\n    if (isNaN(rest)) {\n      return acc;\n    }\n\n    switch (first) {\n      case 'grow':\n        acc.size = acc.size + rest;\n        break;\n\n      case 'shrink':\n        acc.size = acc.size - rest;\n        break;\n\n      case 'left':\n        acc.x = acc.x - rest;\n        break;\n\n      case 'right':\n        acc.x = acc.x + rest;\n        break;\n\n      case 'up':\n        acc.y = acc.y - rest;\n        break;\n\n      case 'down':\n        acc.y = acc.y + rest;\n        break;\n\n      case 'rotate':\n        acc.rotate = acc.rotate + rest;\n        break;\n    }\n\n    return acc;\n  }, transform);\n};\n\nvar PowerTransforms = {\n  mixout: function mixout() {\n    return {\n      parse: {\n        transform: function transform(transformString) {\n          return parseTransformString(transformString);\n        }\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var transformString = node.getAttribute('data-fa-transform');\n\n        if (transformString) {\n          accumulator.transform = parseTransformString(transformString);\n        }\n\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers) {\n    providers.generateAbstractTransformGrouping = function (_ref) {\n      var main = _ref.main,\n          transform = _ref.transform,\n          containerWidth = _ref.containerWidth,\n          iconWidth = _ref.iconWidth;\n      var outer = {\n        transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n      };\n      var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n      var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n      var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n      var inner = {\n        transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n      };\n      var path = {\n        transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n      };\n      var operations = {\n        outer: outer,\n        inner: inner,\n        path: 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};\nvar ALL_SPACE = {\n  x: 0,\n  y: 0,\n  width: '100%',\n  height: '100%'\n};\n\nfunction fillBlack(abstract) {\n  var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (abstract.attributes && (abstract.attributes.fill || force)) {\n    abstract.attributes.fill = 'black';\n  }\n\n  return abstract;\n}\n\nfunction deGroup(abstract) {\n  if (abstract.tag === 'g') {\n    return abstract.children;\n  } else {\n    return [abstract];\n  }\n}\n\nvar Masks = {\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var maskData = node.getAttribute('data-fa-mask');\n        var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n          return i.trim();\n        }));\n\n        if (!mask.prefix) {\n          mask.prefix = getDefaultUsablePrefix();\n        }\n\n        accumulator.mask = mask;\n        accumulator.maskId = node.getAttribute('data-fa-mask-id');\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers) {\n    providers.generateAbstractMask = function (_ref) {\n      var children = _ref.children,\n          attributes = _ref.attributes,\n          main = _ref.main,\n          mask = _ref.mask,\n          explicitMaskId = _ref.maskId,\n          transform = _ref.transform;\n      var mainWidth = main.width,\n          mainPath = main.icon;\n      var maskWidth = mask.width,\n          maskPath = mask.icon;\n      var trans = transformForSvg({\n        transform: transform,\n        containerWidth: maskWidth,\n        iconWidth: mainWidth\n      });\n      var maskRect = {\n        tag: 'rect',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          fill: 'white'\n        })\n      };\n      var maskInnerGroupChildrenMixin = mainPath.children ? {\n        children: mainPath.children.map(fillBlack)\n      } : {};\n      var 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      var maskOuterGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.outer),\n        children: [maskInnerGroup]\n      };\n      var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n      var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n      var 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      var 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: children,\n        attributes: attributes\n      };\n    };\n  }\n};\nvar MissingIconIndicator = {\n  provides: function provides(providers) {\n    var reduceMotion = false;\n\n    if (WINDOW.matchMedia) {\n      reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    }\n\n    providers.missingIconAbstract = function () {\n      var gChildren = [];\n      var FILL = {\n        fill: 'currentColor'\n      };\n      var ANIMATION_BASE = {\n        attributeType: 'XML',\n        repeatCount: 'indefinite',\n        dur: '2s'\n      }; // Ring\n\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\n      var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n        attributeName: 'opacity'\n      });\n\n      var dot = {\n        tag: 'circle',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          cx: '256',\n          cy: '364',\n          r: '28'\n        }),\n        children: []\n      };\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\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\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\n      return {\n        tag: 'g',\n        attributes: {\n          'class': 'missing'\n        },\n        children: gChildren\n      };\n    };\n  }\n};\nvar SvgSymbols = {\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var symbolData = node.getAttribute('data-fa-symbol');\n        var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n        accumulator['symbol'] = symbol;\n        return accumulator;\n      }\n    };\n  }\n};\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\nregisterPlugins(plugins, {\n  mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\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 };","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++) {\n    arr2[i] = arr[i];\n  }\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} // Get CSS class list from a props object\n\n\nfunction classList(props) {\n  var _classes;\n\n  var beat = props.beat,\n      fade = props.fade,\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-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-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} // 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\n\n\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$1 = [\"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$1);\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} // creates an object with a key of key\n// and a value of value\n// if certain conditions are met\n\n\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 _excluded = [\"forwardedRef\"];\n\nfunction FontAwesomeIcon(_ref) {\n  var forwardedRef = _ref.forwardedRef,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var iconArgs = props.icon,\n      maskArgs = props.mask,\n      symbol = props.symbol,\n      className = props.className,\n      title = props.title,\n      titleId = props.titleId;\n  var iconLookup = normalizeIconArgs(iconArgs);\n  var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n  var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.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  }));\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: forwardedRef\n  };\n  Object.keys(props).forEach(function (key) {\n    // eslint-disable-next-line no-prototype-builtins\n    if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n      extraProps[key] = props[key];\n    }\n  });\n  return convertCurry(abstract[0], extraProps);\n}\n\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n  beat: PropTypes.bool,\n  border: 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  fixedWidth: PropTypes.bool,\n  inverse: PropTypes.bool,\n  flip: PropTypes.oneOf(['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  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  transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n  border: false,\n  className: '',\n  mask: null,\n  fixedWidth: false,\n  inverse: false,\n  flip: null,\n  icon: null,\n  listItem: false,\n  pull: null,\n  pulse: false,\n  rotation: null,\n  size: null,\n  spin: false,\n  symbol: false,\n  title: '',\n  transform: null,\n  swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\nexport { FontAwesomeIcon };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar getLocation = function getLocation(source) {\n  var _source$location = source.location,\n      search = _source$location.search,\n      hash = _source$location.hash,\n      href = _source$location.href,\n      origin = _source$location.origin,\n      protocol = _source$location.protocol,\n      host = _source$location.host,\n      hostname = _source$location.hostname,\n      port = _source$location.port;\n  var pathname = source.location.pathname;\n\n  if (!pathname && href && canUseDOM) {\n    var url = new URL(href);\n    pathname = url.pathname;\n  }\n\n  return {\n    pathname: encodeURI(decodeURI(pathname)),\n    search: search,\n    hash: hash,\n    href: href,\n    origin: origin,\n    protocol: protocol,\n    host: host,\n    hostname: hostname,\n    port: port,\n    state: source.history.state,\n    key: source.history.state && source.history.state.key || \"initial\"\n  };\n};\n\nvar createHistory = function createHistory(source, options) {\n  var listeners = [];\n  var location = getLocation(source);\n  var transitioning = false;\n\n  var resolveTransition = function resolveTransition() {};\n\n  return {\n    get location() {\n      return location;\n    },\n\n    get transitioning() {\n      return transitioning;\n    },\n\n    _onTransitionComplete: function _onTransitionComplete() {\n      transitioning = false;\n      resolveTransition();\n    },\n    listen: function listen(listener) {\n      listeners.push(listener);\n\n      var popstateListener = function popstateListener() {\n        location = getLocation(source);\n        listener({\n          location: location,\n          action: \"POP\"\n        });\n      };\n\n      source.addEventListener(\"popstate\", popstateListener);\n      return function () {\n        source.removeEventListener(\"popstate\", popstateListener);\n        listeners = listeners.filter(function (fn) {\n          return fn !== listener;\n        });\n      };\n    },\n    navigate: function navigate(to) {\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          state = _ref.state,\n          _ref$replace = _ref.replace,\n          replace = _ref$replace === undefined ? false : _ref$replace;\n\n      if (typeof to === \"number\") {\n        source.history.go(to);\n      } else {\n        state = _extends({}, state, {\n          key: Date.now() + \"\"\n        }); // try...catch iOS Safari limits to 100 pushState calls\n\n        try {\n          if (transitioning || replace) {\n            source.history.replaceState(state, null, to);\n          } else {\n            source.history.pushState(state, null, to);\n          }\n        } catch (e) {\n          source.location[replace ? \"replace\" : \"assign\"](to);\n        }\n      }\n\n      location = getLocation(source);\n      transitioning = true;\n      var transition = new Promise(function (res) {\n        return resolveTransition = res;\n      });\n      listeners.forEach(function (listener) {\n        return listener({\n          location: location,\n          action: \"PUSH\"\n        });\n      });\n      return transition;\n    }\n  };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n  var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n  var searchIndex = initialPath.indexOf(\"?\");\n  var initialLocation = {\n    pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n    search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n  };\n  var index = 0;\n  var stack = [initialLocation];\n  var states = [null];\n  return {\n    get location() {\n      return stack[index];\n    },\n\n    addEventListener: function addEventListener(name, fn) {},\n    removeEventListener: function removeEventListener(name, fn) {},\n    history: {\n      get entries() {\n        return stack;\n      },\n\n      get index() {\n        return index;\n      },\n\n      get state() {\n        return states[index];\n      },\n\n      pushState: function pushState(state, _, uri) {\n        var _uri$split = uri.split(\"?\"),\n            pathname = _uri$split[0],\n            _uri$split$ = _uri$split[1],\n            search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n        index++;\n        stack.push({\n          pathname: pathname,\n          search: search.length ? \"?\" + search : search\n        });\n        states.push(state);\n      },\n      replaceState: function replaceState(state, _, uri) {\n        var _uri$split2 = uri.split(\"?\"),\n            pathname = _uri$split2[0],\n            _uri$split2$ = _uri$split2[1],\n            search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n        stack[index] = {\n          pathname: pathname,\n          search: search\n        };\n        states[index] = state;\n      },\n      go: function go(to) {\n        var newIndex = index + to;\n\n        if (newIndex < 0 || newIndex > states.length - 1) {\n          return;\n        }\n\n        index = newIndex;\n      }\n    }\n  };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n  return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\n\nvar _invariant = require(\"invariant\");\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n} ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\n\nvar startsWith = function startsWith(string, search) {\n  return string.substr(0, search.length) === search;\n}; ////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n//     static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n//     { path, default, value }\n//\n// And a returned match looks like:\n//\n//     { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\n\n\nvar pick = function pick(routes, uri) {\n  var match = void 0;\n  var default_ = void 0;\n\n  var _uri$split = uri.split(\"?\"),\n      uriPathname = _uri$split[0];\n\n  var uriSegments = segmentize(uriPathname);\n  var isRootUri = uriSegments[0] === \"\";\n  var ranked = rankRoutes(routes);\n\n  for (var i = 0, l = ranked.length; i < l; i++) {\n    var missed = false;\n    var route = ranked[i].route;\n\n    if (route.default) {\n      default_ = {\n        route: route,\n        params: {},\n        uri: uri\n      };\n      continue;\n    }\n\n    var routeSegments = segmentize(route.path);\n    var params = {};\n    var max = Math.max(uriSegments.length, routeSegments.length);\n    var index = 0;\n\n    for (; index < max; index++) {\n      var routeSegment = routeSegments[index];\n      var uriSegment = uriSegments[index];\n\n      if (isSplat(routeSegment)) {\n        // Hit a splat, just grab the rest, and return a match\n        // uri:   /files/documents/work\n        // route: /files/*\n        var param = routeSegment.slice(1) || \"*\";\n        params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n        break;\n      }\n\n      if (uriSegment === undefined) {\n        // URI is shorter than the route, no match\n        // uri:   /users\n        // route: /users/:userId\n        missed = true;\n        break;\n      }\n\n      var dynamicMatch = paramRe.exec(routeSegment);\n\n      if (dynamicMatch && !isRootUri) {\n        var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n        !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \"<Router> dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n        var value = decodeURIComponent(uriSegment);\n        params[dynamicMatch[1]] = value;\n      } else if (routeSegment !== uriSegment) {\n        // Current segments don't match, not dynamic, not splat, so no match\n        // uri:   /users/123/settings\n        // route: /users/:id/profile\n        missed = true;\n        break;\n      }\n    }\n\n    if (!missed) {\n      match = {\n        route: route,\n        params: params,\n        uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n      };\n      break;\n    }\n  }\n\n  return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n  return pick([{\n    path: path\n  }], uri);\n}; ////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files.  Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n//     browserSpecResolve('foo', '/bar/') => /bar/foo\n//     browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories.  This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n//     <Link to=\"deeper\"/>\n//     // instead of\n//     <Link to=`{${props.uri}/deeper}`/>\n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n//     cd deeper\n//     # not\n//     cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\n\n\nvar resolve = function resolve(to, base) {\n  // /foo/bar, /baz/qux => /foo/bar\n  if (startsWith(to, \"/\")) {\n    return to;\n  }\n\n  var _to$split = to.split(\"?\"),\n      toPathname = _to$split[0],\n      toQuery = _to$split[1];\n\n  var _base$split = base.split(\"?\"),\n      basePathname = _base$split[0];\n\n  var toSegments = segmentize(toPathname);\n  var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n  if (toSegments[0] === \"\") {\n    return addQuery(basePathname, toQuery);\n  } // profile, /users/789 => /users/789/profile\n\n\n  if (!startsWith(toSegments[0], \".\")) {\n    var pathname = baseSegments.concat(toSegments).join(\"/\");\n    return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n  } // ./         /users/123  =>  /users/123\n  // ../        /users/123  =>  /users\n  // ../..      /users/123  =>  /\n  // ../../one  /a/b/c/d    =>  /a/b/one\n  // .././one   /a/b/c/d    =>  /a/b/c/one\n\n\n  var allSegments = baseSegments.concat(toSegments);\n  var segments = [];\n\n  for (var i = 0, l = allSegments.length; i < l; i++) {\n    var segment = allSegments[i];\n    if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n  }\n\n  return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\n\nvar insertParams = function insertParams(path, params) {\n  var _path$split = path.split(\"?\"),\n      pathBase = _path$split[0],\n      _path$split$ = _path$split[1],\n      query = _path$split$ === undefined ? \"\" : _path$split$;\n\n  var segments = segmentize(pathBase);\n  var constructedPath = \"/\" + segments.map(function (segment) {\n    var match = paramRe.exec(segment);\n    return match ? params[match[1]] : segment;\n  }).join(\"/\");\n  var _params$location = params.location;\n  _params$location = _params$location === undefined ? {} : _params$location;\n  var _params$location$sear = _params$location.search,\n      search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n  var searchSplit = search.split(\"?\")[1] || \"\";\n  constructedPath = addQuery(constructedPath, query, searchSplit);\n  return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n  var filter = function filter(segment) {\n    return isDynamic(segment);\n  };\n\n  var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n  var toString = segmentize(to).filter(filter).sort().join(\"/\");\n  return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n  return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n  return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n  return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n  var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n    score += SEGMENT_POINTS;\n    if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n    return score;\n  }, 0);\n  return {\n    route: route,\n    score: score,\n    index: index\n  };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n  return routes.map(rankRoute).sort(function (a, b) {\n    return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n  });\n};\n\nvar segmentize = function segmentize(uri) {\n  return uri // strip starting/ending slashes\n  .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n  for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    query[_key - 1] = arguments[_key];\n  }\n\n  query = query.filter(function (q) {\n    return q && q.length > 0;\n  });\n  return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\n\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n  var obj1Keys = Object.keys(obj1);\n  return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n    return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n  });\n}; ////////////////////////////////////////////////////////////////////////////////\n\n\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","export default function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}","import React from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { isValidElementType } from 'react-is';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n/* eslint-disable import/prefer-default-export */\n\nfunction invariant(condition, message) {\n  if (condition) return;\n  var error = new Error(\"loadable: \" + message);\n  error.framesToPop = 1;\n  error.name = 'Invariant Violation';\n  throw error;\n}\n\nfunction warn(message) {\n  // eslint-disable-next-line no-console\n  console.warn(\"loadable: \" + message);\n}\n\nvar Context = /*#__PURE__*/React.createContext();\nvar LOADABLE_REQUIRED_CHUNKS_KEY = '__LOADABLE_REQUIRED_CHUNKS__';\n\nfunction getRequiredChunkKey(namespace) {\n  return \"\" + namespace + LOADABLE_REQUIRED_CHUNKS_KEY;\n}\n\nvar sharedInternals = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  getRequiredChunkKey: getRequiredChunkKey,\n  invariant: invariant,\n  Context: Context\n});\nvar LOADABLE_SHARED = {\n  initialChunks: {}\n};\nvar STATUS_PENDING = 'PENDING';\nvar STATUS_RESOLVED = 'RESOLVED';\nvar STATUS_REJECTED = 'REJECTED';\n\nfunction resolveConstructor(ctor) {\n  if (typeof ctor === 'function') {\n    return {\n      requireAsync: ctor,\n      resolve: function resolve() {\n        return undefined;\n      },\n      chunkName: function chunkName() {\n        return undefined;\n      }\n    };\n  }\n\n  return ctor;\n}\n\nvar withChunkExtractor = function withChunkExtractor(Component) {\n  var LoadableWithChunkExtractor = function LoadableWithChunkExtractor(props) {\n    return React.createElement(Context.Consumer, null, function (extractor) {\n      return React.createElement(Component, Object.assign({\n        __chunkExtractor: extractor\n      }, props));\n    });\n  };\n\n  if (Component.displayName) {\n    LoadableWithChunkExtractor.displayName = Component.displayName + \"WithChunkExtractor\";\n  }\n\n  return LoadableWithChunkExtractor;\n};\n\nvar identity = function identity(v) {\n  return v;\n};\n\nfunction createLoadable(_ref) {\n  var _ref$defaultResolveCo = _ref.defaultResolveComponent,\n      defaultResolveComponent = _ref$defaultResolveCo === void 0 ? identity : _ref$defaultResolveCo,\n      _render = _ref.render,\n      onLoad = _ref.onLoad;\n\n  function loadable(loadableConstructor, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var ctor = resolveConstructor(loadableConstructor);\n    var cache = {};\n    /**\n     * Cachekey represents the component to be loaded\n     * if key changes - component has to be reloaded\n     * @param props\n     * @returns {null|Component}\n     */\n\n    function _getCacheKey(props) {\n      if (options.cacheKey) {\n        return options.cacheKey(props);\n      }\n\n      if (ctor.resolve) {\n        return ctor.resolve(props);\n      }\n\n      return 'static';\n    }\n    /**\n     * Resolves loaded `module` to a specific `Component\n     * @param module\n     * @param props\n     * @param Loadable\n     * @returns Component\n     */\n\n\n    function resolve(module, props, Loadable) {\n      var Component = options.resolveComponent ? options.resolveComponent(module, props) : defaultResolveComponent(module);\n\n      if (options.resolveComponent && !isValidElementType(Component)) {\n        throw new Error(\"resolveComponent returned something that is not a React component!\");\n      }\n\n      hoistNonReactStatics(Loadable, Component, {\n        preload: true\n      });\n      return Component;\n    }\n\n    var cachedLoad = function cachedLoad(props) {\n      var cacheKey = _getCacheKey(props);\n\n      var promise = cache[cacheKey];\n\n      if (!promise || promise.status === STATUS_REJECTED) {\n        promise = ctor.requireAsync(props);\n        promise.status = STATUS_PENDING;\n        cache[cacheKey] = promise;\n        promise.then(function () {\n          promise.status = STATUS_RESOLVED;\n        }, function (error) {\n          console.error('loadable-components: failed to asynchronously load component', {\n            fileName: ctor.resolve(props),\n            chunkName: ctor.chunkName(props),\n            error: error ? error.message : error\n          });\n          promise.status = STATUS_REJECTED;\n        });\n      }\n\n      return promise;\n    };\n\n    var InnerLoadable = /*#__PURE__*/function (_React$Component) {\n      _inheritsLoose(InnerLoadable, _React$Component);\n\n      InnerLoadable.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n        var cacheKey = _getCacheKey(props);\n\n        return _extends({}, state, {\n          cacheKey: cacheKey,\n          // change of a key triggers loading state automatically\n          loading: state.loading || state.cacheKey !== cacheKey\n        });\n      };\n\n      function InnerLoadable(props) {\n        var _this;\n\n        _this = _React$Component.call(this, props) || this;\n        _this.state = {\n          result: null,\n          error: null,\n          loading: true,\n          cacheKey: _getCacheKey(props)\n        };\n        invariant(!props.__chunkExtractor || ctor.requireSync, 'SSR requires `@loadable/babel-plugin`, please install it'); // Server-side\n\n        if (props.__chunkExtractor) {\n          // This module has been marked with no SSR\n          if (options.ssr === false) {\n            return _assertThisInitialized(_this);\n          } // We run load function, we assume that it won't fail and that it\n          // triggers a synchronous loading of the module\n\n\n          ctor.requireAsync(props)[\"catch\"](function () {\n            return null;\n          }); // So we can require now the module synchronously\n\n          _this.loadSync();\n\n          props.__chunkExtractor.addChunk(ctor.chunkName(props));\n\n          return _assertThisInitialized(_this);\n        } // Client-side with `isReady` method present (SSR probably)\n        // If module is already loaded, we use a synchronous loading\n        // Only perform this synchronous loading if the component has not\n        // been marked with no SSR, else we risk hydration mismatches\n\n\n        if (options.ssr !== false && ( // is ready - was loaded in this session\n        ctor.isReady && ctor.isReady(props) || // is ready - was loaded during SSR process\n        ctor.chunkName && LOADABLE_SHARED.initialChunks[ctor.chunkName(props)])) {\n          _this.loadSync();\n        }\n\n        return _this;\n      }\n\n      var _proto = InnerLoadable.prototype;\n\n      _proto.componentDidMount = function componentDidMount() {\n        this.mounted = true; // retrieve loading promise from a global cache\n\n        var cachedPromise = this.getCache(); // if promise exists, but rejected - clear cache\n\n        if (cachedPromise && cachedPromise.status === STATUS_REJECTED) {\n          this.setCache();\n        } // component might be resolved synchronously in the constructor\n\n\n        if (this.state.loading) {\n          this.loadAsync();\n        }\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n        // Component has to be reloaded on cacheKey change\n        if (prevState.cacheKey !== this.state.cacheKey) {\n          this.loadAsync();\n        }\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        this.mounted = false;\n      };\n\n      _proto.safeSetState = function safeSetState(nextState, callback) {\n        if (this.mounted) {\n          this.setState(nextState, callback);\n        }\n      }\n      /**\n       * returns a cache key for the current props\n       * @returns {Component|string}\n       */\n      ;\n\n      _proto.getCacheKey = function getCacheKey() {\n        return _getCacheKey(this.props);\n      }\n      /**\n       * access the persistent cache\n       */\n      ;\n\n      _proto.getCache = function getCache() {\n        return cache[this.getCacheKey()];\n      }\n      /**\n       * sets the cache value. If called without value sets it as undefined\n       */\n      ;\n\n      _proto.setCache = function setCache(value) {\n        if (value === void 0) {\n          value = undefined;\n        }\n\n        cache[this.getCacheKey()] = value;\n      };\n\n      _proto.triggerOnLoad = function triggerOnLoad() {\n        var _this2 = this;\n\n        if (onLoad) {\n          setTimeout(function () {\n            onLoad(_this2.state.result, _this2.props);\n          });\n        }\n      }\n      /**\n       * Synchronously loads component\n       * target module is expected to already exists in the module cache\n       * or be capable to resolve synchronously (webpack target=node)\n       */\n      ;\n\n      _proto.loadSync = function loadSync() {\n        // load sync is expecting component to be in the \"loading\" state already\n        // sounds weird, but loading=true is the initial state of InnerLoadable\n        if (!this.state.loading) return;\n\n        try {\n          var loadedModule = ctor.requireSync(this.props);\n          var result = resolve(loadedModule, this.props, Loadable);\n          this.state.result = result;\n          this.state.loading = false;\n        } catch (error) {\n          console.error('loadable-components: failed to synchronously load component, which expected to be available', {\n            fileName: ctor.resolve(this.props),\n            chunkName: ctor.chunkName(this.props),\n            error: error ? error.message : error\n          });\n          this.state.error = error;\n        }\n      }\n      /**\n       * Asynchronously loads a component.\n       */\n      ;\n\n      _proto.loadAsync = function loadAsync() {\n        var _this3 = this;\n\n        var promise = this.resolveAsync();\n        promise.then(function (loadedModule) {\n          var result = resolve(loadedModule, _this3.props, Loadable);\n\n          _this3.safeSetState({\n            result: result,\n            loading: false\n          }, function () {\n            return _this3.triggerOnLoad();\n          });\n        })[\"catch\"](function (error) {\n          return _this3.safeSetState({\n            error: error,\n            loading: false\n          });\n        });\n        return promise;\n      }\n      /**\n       * Asynchronously resolves(not loads) a component.\n       * Note - this function does not change the state\n       */\n      ;\n\n      _proto.resolveAsync = function resolveAsync() {\n        var _this$props = this.props,\n            __chunkExtractor = _this$props.__chunkExtractor,\n            forwardedRef = _this$props.forwardedRef,\n            props = _objectWithoutPropertiesLoose(_this$props, [\"__chunkExtractor\", \"forwardedRef\"]);\n\n        return cachedLoad(props);\n      };\n\n      _proto.render = function render() {\n        var _this$props2 = this.props,\n            forwardedRef = _this$props2.forwardedRef,\n            propFallback = _this$props2.fallback,\n            __chunkExtractor = _this$props2.__chunkExtractor,\n            props = _objectWithoutPropertiesLoose(_this$props2, [\"forwardedRef\", \"fallback\", \"__chunkExtractor\"]);\n\n        var _this$state = this.state,\n            error = _this$state.error,\n            loading = _this$state.loading,\n            result = _this$state.result;\n\n        if (options.suspense) {\n          var cachedPromise = this.getCache() || this.loadAsync();\n\n          if (cachedPromise.status === STATUS_PENDING) {\n            throw this.loadAsync();\n          }\n        }\n\n        if (error) {\n          throw error;\n        }\n\n        var fallback = propFallback || options.fallback || null;\n\n        if (loading) {\n          return fallback;\n        }\n\n        return _render({\n          fallback: fallback,\n          result: result,\n          options: options,\n          props: _extends({}, props, {\n            ref: forwardedRef\n          })\n        });\n      };\n\n      return InnerLoadable;\n    }(React.Component);\n\n    var EnhancedInnerLoadable = withChunkExtractor(InnerLoadable);\n    var Loadable = React.forwardRef(function (props, ref) {\n      return React.createElement(EnhancedInnerLoadable, Object.assign({\n        forwardedRef: ref\n      }, props));\n    });\n    Loadable.displayName = 'Loadable'; // In future, preload could use `<link rel=\"preload\">`\n\n    Loadable.preload = function (props) {\n      Loadable.load(props);\n    };\n\n    Loadable.load = function (props) {\n      return cachedLoad(props);\n    };\n\n    return Loadable;\n  }\n\n  function lazy(ctor, options) {\n    return loadable(ctor, _extends({}, options, {\n      suspense: true\n    }));\n  }\n\n  return {\n    loadable: loadable,\n    lazy: lazy\n  };\n}\n\nfunction defaultResolveComponent(loadedModule) {\n  // eslint-disable-next-line no-underscore-dangle\n  return loadedModule.__esModule ? loadedModule[\"default\"] : loadedModule[\"default\"] || loadedModule;\n}\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\n\nvar _createLoadable = /*#__PURE__*/createLoadable({\n  defaultResolveComponent: defaultResolveComponent,\n  render: function render(_ref) {\n    var Component = _ref.result,\n        props = _ref.props;\n    return React.createElement(Component, props);\n  }\n}),\n    loadable = _createLoadable.loadable,\n    lazy = _createLoadable.lazy;\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\n\nvar _createLoadable$1 = /*#__PURE__*/createLoadable({\n  onLoad: function onLoad(result, props) {\n    if (result && props.forwardedRef) {\n      if (typeof props.forwardedRef === 'function') {\n        props.forwardedRef(result);\n      } else {\n        props.forwardedRef.current = result;\n      }\n    }\n  },\n  render: function render(_ref) {\n    var result = _ref.result,\n        props = _ref.props;\n\n    if (props.children) {\n      return props.children(result);\n    }\n\n    return null;\n  }\n}),\n    loadable$1 = _createLoadable$1.loadable,\n    lazy$1 = _createLoadable$1.lazy;\n/* eslint-disable no-underscore-dangle, camelcase */\n\n\nvar BROWSER = typeof window !== 'undefined';\n\nfunction loadableReady(done, _temp) {\n  if (done === void 0) {\n    done = function done() {};\n  }\n\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$namespace = _ref.namespace,\n      namespace = _ref$namespace === void 0 ? '' : _ref$namespace,\n      _ref$chunkLoadingGlob = _ref.chunkLoadingGlobal,\n      chunkLoadingGlobal = _ref$chunkLoadingGlob === void 0 ? '__LOADABLE_LOADED_CHUNKS__' : _ref$chunkLoadingGlob;\n\n  if (!BROWSER) {\n    warn('`loadableReady()` must be called in browser only');\n    done();\n    return Promise.resolve();\n  }\n\n  var requiredChunks = null;\n\n  if (BROWSER) {\n    var id = getRequiredChunkKey(namespace);\n    var dataElement = document.getElementById(id);\n\n    if (dataElement) {\n      requiredChunks = JSON.parse(dataElement.textContent);\n      var extElement = document.getElementById(id + \"_ext\");\n\n      if (extElement) {\n        var _JSON$parse = JSON.parse(extElement.textContent),\n            namedChunks = _JSON$parse.namedChunks;\n\n        namedChunks.forEach(function (chunkName) {\n          LOADABLE_SHARED.initialChunks[chunkName] = true;\n        });\n      } else {\n        // version mismatch\n        throw new Error('loadable-component: @loadable/server does not match @loadable/component');\n      }\n    }\n  }\n\n  if (!requiredChunks) {\n    warn('`loadableReady()` requires state, please use `getScriptTags` or `getScriptElements` server-side');\n    done();\n    return Promise.resolve();\n  }\n\n  var resolved = false;\n  return new Promise(function (resolve) {\n    window[chunkLoadingGlobal] = window[chunkLoadingGlobal] || [];\n    var loadedChunks = window[chunkLoadingGlobal];\n    var originalPush = loadedChunks.push.bind(loadedChunks);\n\n    function checkReadyState() {\n      if (requiredChunks.every(function (chunk) {\n        return loadedChunks.some(function (_ref2) {\n          var chunks = _ref2[0];\n          return chunks.indexOf(chunk) > -1;\n        });\n      })) {\n        if (!resolved) {\n          resolved = true;\n          resolve();\n        }\n      }\n    }\n\n    loadedChunks.push = function () {\n      originalPush.apply(void 0, arguments);\n      checkReadyState();\n    };\n\n    checkReadyState();\n  }).then(done);\n}\n/* eslint-disable no-underscore-dangle */\n\n\nvar loadable$2 = loadable;\nloadable$2.lib = loadable$1;\nvar lazy$2 = lazy;\nlazy$2.lib = lazy$1;\nvar __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sharedInternals;\nexport default loadable$2;\nexport { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy$2 as lazy, loadableReady };","import React from 'react';\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 _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\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 = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\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\nvar isFunction = function isFunction(obj) {\n  return typeof obj === 'function';\n};\n\nvar MDXContext = /*#__PURE__*/React.createContext({});\n\nvar withMDXComponents = function withMDXComponents(Component) {\n  return function (props) {\n    var allComponents = useMDXComponents(props.components);\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n      components: allComponents\n    }));\n  };\n};\n\nvar useMDXComponents = function useMDXComponents(components) {\n  var contextComponents = React.useContext(MDXContext);\n  var allComponents = contextComponents;\n\n  if (components) {\n    allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n  }\n\n  return allComponents;\n};\n\nvar MDXProvider = function MDXProvider(props) {\n  var allComponents = useMDXComponents(props.components);\n  return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n    value: allComponents\n  }, props.children);\n};\n\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n  inlineCode: 'code',\n  wrapper: function wrapper(_ref) {\n    var children = _ref.children;\n    return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n  }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var propComponents = props.components,\n      mdxType = props.mdxType,\n      originalType = props.originalType,\n      parentName = props.parentName,\n      etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n\n  var components = useMDXComponents(propComponents);\n  var type = mdxType;\n  var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n\n  if (propComponents) {\n    return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n      ref: ref\n    }, etc), {}, {\n      components: propComponents\n    }));\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n    ref: ref\n  }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\n\nfunction createElement(type, props) {\n  var args = arguments;\n  var mdxType = props && props.mdxType;\n\n  if (typeof type === 'string' || mdxType) {\n    var argsLength = args.length;\n    var createElementArgArray = new Array(argsLength);\n    createElementArgArray[0] = MDXCreateElement;\n    var newProps = {};\n\n    for (var key in props) {\n      if (hasOwnProperty.call(props, key)) {\n        newProps[key] = props[key];\n      }\n    }\n\n    newProps.originalType = type;\n    newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n    createElementArgArray[1] = newProps;\n\n    for (var i = 2; i < argsLength; i++) {\n      createElementArgArray[i] = args[i];\n    }\n\n    return React.createElement.apply(null, createElementArgArray);\n  }\n\n  return React.createElement.apply(null, args);\n}\n\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","'use strict';\n\nvar preserveCamelCase = function preserveCamelCase(string) {\n  var isLastCharLower = false;\n  var isLastCharUpper = false;\n  var isLastLastCharUpper = false;\n\n  for (var i = 0; i < string.length; i++) {\n    var character = string[i];\n\n    if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n      string = string.slice(0, i) + '-' + string.slice(i);\n      isLastCharLower = false;\n      isLastLastCharUpper = isLastCharUpper;\n      isLastCharUpper = true;\n      i++;\n    } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n      string = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n      isLastLastCharUpper = isLastCharUpper;\n      isLastCharUpper = false;\n      isLastCharLower = true;\n    } else {\n      isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n      isLastLastCharUpper = isLastCharUpper;\n      isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n    }\n  }\n\n  return string;\n};\n\nvar camelCase = function camelCase(input, options) {\n  if (!(typeof input === 'string' || Array.isArray(input))) {\n    throw new TypeError('Expected the input to be `string | string[]`');\n  }\n\n  options = Object.assign({\n    pascalCase: false\n  }, options);\n\n  var postProcess = function postProcess(x) {\n    return options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n  };\n\n  if (Array.isArray(input)) {\n    input = input.map(function (x) {\n      return x.trim();\n    }).filter(function (x) {\n      return x.length;\n    }).join('-');\n  } else {\n    input = input.trim();\n  }\n\n  if (input.length === 0) {\n    return '';\n  }\n\n  if (input.length === 1) {\n    return options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n  }\n\n  var hasUpperCase = input !== input.toLowerCase();\n\n  if (hasUpperCase) {\n    input = preserveCamelCase(input);\n  }\n\n  input = input.replace(/^[_.\\- ]+/, '').toLowerCase().replace(/[_.\\- ]+(\\w|$)/g, function (_, p1) {\n    return p1.toUpperCase();\n  }).replace(/\\d+(\\w|$)/g, function (m) {\n    return m.toUpperCase();\n  });\n  return postProcess(input);\n};\n\nmodule.exports = camelCase; // TODO: Remove this for the next major release\n\nmodule.exports.default = camelCase;","var _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']);\n\nfunction _taggedTemplateLiteral(strings, raw) {\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n/**\n * @class TemplateTag\n * @classdesc Consumes a pipeline of composable transformer plugins and produces a template tag.\n */\n\n\nvar TemplateTag = function () {\n  /**\n   * constructs a template tag\n   * @constructs TemplateTag\n   * @param  {...Object} [...transformers] - an array or arguments list of transformers\n   * @return {Function}                    - a template tag\n   */\n  function TemplateTag() {\n    var _this = this;\n\n    for (var _len = arguments.length, transformers = Array(_len), _key = 0; _key < _len; _key++) {\n      transformers[_key] = arguments[_key];\n    }\n\n    _classCallCheck(this, TemplateTag);\n\n    this.tag = function (strings) {\n      for (var _len2 = arguments.length, expressions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        expressions[_key2 - 1] = arguments[_key2];\n      }\n\n      if (typeof strings === 'function') {\n        // if the first argument passed is a function, assume it is a template tag and return\n        // an intermediary tag that processes the template using the aforementioned tag, passing the\n        // result to our tag\n        return _this.interimTag.bind(_this, strings);\n      }\n\n      if (typeof strings === 'string') {\n        // if the first argument passed is a string, just transform it\n        return _this.transformEndResult(strings);\n      } // else, return a transformed end result of processing the template with our tag\n\n\n      strings = strings.map(_this.transformString.bind(_this));\n      return _this.transformEndResult(strings.reduce(_this.processSubstitutions.bind(_this, expressions)));\n    }; // if first argument is an array, extrude it as a list of transformers\n\n\n    if (transformers.length > 0 && Array.isArray(transformers[0])) {\n      transformers = transformers[0];\n    } // if any transformers are functions, this means they are not initiated - automatically initiate them\n\n\n    this.transformers = transformers.map(function (transformer) {\n      return typeof transformer === 'function' ? transformer() : transformer;\n    }); // return an ES2015 template tag\n\n    return this.tag;\n  }\n  /**\n   * Applies all transformers to a template literal tagged with this method.\n   * If a function is passed as the first argument, assumes the function is a template tag\n   * and applies it to the template, returning a template tag.\n   * @param  {(Function|String|Array<String>)} strings        - Either a template tag or an array containing template strings separated by identifier\n   * @param  {...*}                            ...expressions - Optional list of substitution values.\n   * @return {(String|Function)}                              - Either an intermediary tag function or the results of processing the template.\n   */\n\n\n  _createClass(TemplateTag, [{\n    key: 'interimTag',\n\n    /**\n     * An intermediary template tag that receives a template tag and passes the result of calling the template with the received\n     * template tag to our own template tag.\n     * @param  {Function}        nextTag          - the received template tag\n     * @param  {Array<String>}   template         - the template to process\n     * @param  {...*}            ...substitutions - `substitutions` is an array of all substitutions in the template\n     * @return {*}                                - the final processed value\n     */\n    value: function interimTag(previousTag, template) {\n      for (var _len3 = arguments.length, substitutions = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n        substitutions[_key3 - 2] = arguments[_key3];\n      }\n\n      return this.tag(_templateObject, previousTag.apply(undefined, [template].concat(substitutions)));\n    }\n    /**\n     * Performs bulk processing on the tagged template, transforming each substitution and then\n     * concatenating the resulting values into a string.\n     * @param  {Array<*>} substitutions - an array of all remaining substitutions present in this template\n     * @param  {String}   resultSoFar   - this iteration's result string so far\n     * @param  {String}   remainingPart - the template chunk after the current substitution\n     * @return {String}                 - the result of joining this iteration's processed substitution with the result\n     */\n\n  }, {\n    key: 'processSubstitutions',\n    value: function processSubstitutions(substitutions, resultSoFar, remainingPart) {\n      var substitution = this.transformSubstitution(substitutions.shift(), resultSoFar);\n      return ''.concat(resultSoFar, substitution, remainingPart);\n    }\n    /**\n     * Iterate through each transformer, applying the transformer's `onString` method to the template\n     * strings before all substitutions are processed.\n     * @param {String}  str - The input string\n     * @return {String}     - The final results of processing each transformer\n     */\n\n  }, {\n    key: 'transformString',\n    value: function transformString(str) {\n      var cb = function cb(res, transform) {\n        return transform.onString ? transform.onString(res) : res;\n      };\n\n      return this.transformers.reduce(cb, str);\n    }\n    /**\n     * When a substitution is encountered, iterates through each transformer and applies the transformer's\n     * `onSubstitution` method to the substitution.\n     * @param  {*}      substitution - The current substitution\n     * @param  {String} resultSoFar  - The result up to and excluding this substitution.\n     * @return {*}                   - The final result of applying all substitution transformations.\n     */\n\n  }, {\n    key: 'transformSubstitution',\n    value: function transformSubstitution(substitution, resultSoFar) {\n      var cb = function cb(res, transform) {\n        return transform.onSubstitution ? transform.onSubstitution(res, resultSoFar) : res;\n      };\n\n      return this.transformers.reduce(cb, substitution);\n    }\n    /**\n     * Iterates through each transformer, applying the transformer's `onEndResult` method to the\n     * template literal after all substitutions have finished processing.\n     * @param  {String} endResult - The processed template, just before it is returned from the tag\n     * @return {String}           - The final results of processing each transformer\n     */\n\n  }, {\n    key: 'transformEndResult',\n    value: function transformEndResult(endResult) {\n      var cb = function cb(res, transform) {\n        return transform.onEndResult ? transform.onEndResult(res) : res;\n      };\n\n      return this.transformers.reduce(cb, endResult);\n    }\n  }]);\n\n  return TemplateTag;\n}();\n\nexport default TemplateTag;","var defaults = {\n  separator: '',\n  conjunction: '',\n  serial: false\n};\n/**\n * Converts an array substitution to a string containing a list\n * @param  {String} [opts.separator = ''] - the character that separates each item\n * @param  {String} [opts.conjunction = '']  - replace the last separator with this\n * @param  {Boolean} [opts.serial = false] - include the separator before the conjunction? (Oxford comma use-case)\n *\n * @return {Object}                     - a TemplateTag transformer\n */\n\nvar inlineArrayTransformer = function inlineArrayTransformer() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults;\n  return {\n    onSubstitution: function onSubstitution(substitution, resultSoFar) {\n      // only operate on arrays\n      if (Array.isArray(substitution)) {\n        var arrayLength = substitution.length;\n        var separator = opts.separator;\n        var conjunction = opts.conjunction;\n        var serial = opts.serial; // join each item in the array into a string where each item is separated by separator\n        // be sure to maintain indentation\n\n        var indent = resultSoFar.match(/(\\n?[^\\S\\n]+)$/);\n\n        if (indent) {\n          substitution = substitution.join(separator + indent[1]);\n        } else {\n          substitution = substitution.join(separator + ' ');\n        } // if conjunction is set, replace the last separator with conjunction, but only if there is more than one substitution\n\n\n        if (conjunction && arrayLength > 1) {\n          var separatorIndex = substitution.lastIndexOf(separator);\n          substitution = substitution.slice(0, separatorIndex) + (serial ? separator : '') + ' ' + conjunction + substitution.slice(separatorIndex + 1);\n        }\n      }\n\n      return substitution;\n    }\n  };\n};\n\nexport default inlineArrayTransformer;","function _toConsumableArray(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n}\n/**\n * strips indentation from a template literal\n * @param  {String} type = 'initial' - whether to remove all indentation or just leading indentation. can be 'all' or 'initial'\n * @return {Object}                  - a TemplateTag transformer\n */\n\n\nvar stripIndentTransformer = function stripIndentTransformer() {\n  var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';\n  return {\n    onEndResult: function onEndResult(endResult) {\n      if (type === 'initial') {\n        // remove the shortest leading indentation from each line\n        var match = endResult.match(/^[^\\S\\n]*(?=\\S)/gm);\n        var indent = match && Math.min.apply(Math, _toConsumableArray(match.map(function (el) {\n          return el.length;\n        })));\n\n        if (indent) {\n          var regexp = new RegExp('^.{' + indent + '}', 'gm');\n          return endResult.replace(regexp, '');\n        }\n\n        return endResult;\n      }\n\n      if (type === 'all') {\n        // remove all indentation from each line\n        return endResult.replace(/^[^\\S\\n]+/gm, '');\n      }\n\n      throw new Error('Unknown type: ' + type);\n    }\n  };\n};\n\nexport default stripIndentTransformer;","/**\n * TemplateTag transformer that trims whitespace on the end result of a tagged template\n * @param  {String} side = '' - The side of the string to trim. Can be 'start' or 'end' (alternatively 'left' or 'right')\n * @return {Object}           - a TemplateTag transformer\n */\nvar trimResultTransformer = function trimResultTransformer() {\n  var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return {\n    onEndResult: function onEndResult(endResult) {\n      if (side === '') {\n        return endResult.trim();\n      }\n\n      side = side.toLowerCase();\n\n      if (side === 'start' || side === 'left') {\n        return endResult.replace(/^\\s*/, '');\n      }\n\n      if (side === 'end' || side === 'right') {\n        return endResult.replace(/\\s*$/, '');\n      }\n\n      throw new Error('Side not supported: ' + side);\n    }\n  };\n};\n\nexport default trimResultTransformer;","var splitStringTransformer = function splitStringTransformer(splitBy) {\n  return {\n    onSubstitution: function onSubstitution(substitution, resultSoFar) {\n      if (splitBy != null && typeof splitBy === 'string') {\n        if (typeof substitution === 'string' && substitution.includes(splitBy)) {\n          substitution = substitution.split(splitBy);\n        }\n      } else {\n        throw new Error('You need to specify a string character to split by.');\n      }\n\n      return substitution;\n    }\n  };\n};\n\nexport default splitStringTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaLists = new TemplateTag(inlineArrayTransformer({\n  separator: ','\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsAnd = new TemplateTag(inlineArrayTransformer({\n  separator: ',',\n  conjunction: 'and'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsOr = new TemplateTag(inlineArrayTransformer({\n  separator: ',',\n  conjunction: 'or'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsOr;","var isValidValue = function isValidValue(x) {\n  return x != null && !Number.isNaN(x) && typeof x !== 'boolean';\n};\n\nvar removeNonPrintingValuesTransformer = function removeNonPrintingValuesTransformer() {\n  return {\n    onSubstitution: function onSubstitution(substitution) {\n      if (Array.isArray(substitution)) {\n        return substitution.filter(isValidValue);\n      }\n\n      if (isValidValue(substitution)) {\n        return substitution;\n      }\n\n      return '';\n    }\n  };\n};\n\nexport default removeNonPrintingValuesTransformer;","var replaceSubstitutionTransformer = function replaceSubstitutionTransformer(replaceWhat, replaceWith) {\n  return {\n    onSubstitution: function onSubstitution(substitution, resultSoFar) {\n      if (replaceWhat == null || replaceWith == null) {\n        throw new Error('replaceSubstitutionTransformer requires at least 2 arguments.');\n      } // Do not touch if null or undefined\n\n\n      if (substitution == null) {\n        return substitution;\n      } else {\n        return substitution.toString().replace(replaceWhat, replaceWith);\n      }\n    }\n  };\n};\n\nexport default replaceSubstitutionTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport removeNonPrintingValuesTransformer from '../removeNonPrintingValuesTransformer';\nvar html = new TemplateTag(splitStringTransformer('\\n'), removeNonPrintingValuesTransformer, inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default html;","/**\n * Replaces tabs, newlines and spaces with the chosen value when they occur in sequences\n * @param  {(String|RegExp)} replaceWhat - the value or pattern that should be replaced\n * @param  {*}               replaceWith - the replacement value\n * @return {Object}                      - a TemplateTag transformer\n */\nvar replaceResultTransformer = function replaceResultTransformer(replaceWhat, replaceWith) {\n  return {\n    onEndResult: function onEndResult(endResult) {\n      if (replaceWhat == null || replaceWith == null) {\n        throw new Error('replaceResultTransformer requires at least 2 arguments.');\n      }\n\n      return endResult.replace(replaceWhat, replaceWith);\n    }\n  };\n};\n\nexport default replaceResultTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport replaceSubstitutionTransformer from '../replaceSubstitutionTransformer';\nvar safeHtml = new TemplateTag(splitStringTransformer('\\n'), inlineArrayTransformer, stripIndentTransformer, trimResultTransformer, replaceSubstitutionTransformer(/&/g, '&amp;'), replaceSubstitutionTransformer(/</g, '&lt;'), replaceSubstitutionTransformer(/>/g, '&gt;'), replaceSubstitutionTransformer(/\"/g, '&quot;'), replaceSubstitutionTransformer(/'/g, '&#x27;'), replaceSubstitutionTransformer(/`/g, '&#x60;'));\nexport default safeHtml;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLine = new TemplateTag(replaceResultTransformer(/(?:\\n(?:\\s*))+/g, ' '), trimResultTransformer);\nexport default oneLine;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineTrim = new TemplateTag(replaceResultTransformer(/(?:\\n\\s*)/g, ''), trimResultTransformer);\nexport default oneLineTrim;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaLists = new TemplateTag(inlineArrayTransformer({\n  separator: ','\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsOr = new TemplateTag(inlineArrayTransformer({\n  separator: ',',\n  conjunction: 'or'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsOr;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsAnd = new TemplateTag(inlineArrayTransformer({\n  separator: ',',\n  conjunction: 'and'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar inlineLists = new TemplateTag(inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default inlineLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineInlineLists = new TemplateTag(inlineArrayTransformer, replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineInlineLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndent = new TemplateTag(stripIndentTransformer, trimResultTransformer);\nexport default stripIndent;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndents = new TemplateTag(stripIndentTransformer('all'), trimResultTransformer);\nexport default stripIndents;","var global = typeof self !== 'undefined' ? self : this;\n\nvar __self__ = function () {\n  function F() {\n    this.fetch = false;\n    this.DOMException = global.DOMException;\n  }\n\n  F.prototype = global;\n  return new F();\n}();\n\n(function (self) {\n  var irrelevant = function (exports) {\n    var support = {\n      searchParams: 'URLSearchParams' in self,\n      iterable: 'Symbol' in self && 'iterator' in Symbol,\n      blob: 'FileReader' in self && 'Blob' in self && function () {\n        try {\n          new Blob();\n          return true;\n        } catch (e) {\n          return false;\n        }\n      }(),\n      formData: 'FormData' in self,\n      arrayBuffer: 'ArrayBuffer' in self\n    };\n\n    function isDataView(obj) {\n      return obj && DataView.prototype.isPrototypeOf(obj);\n    }\n\n    if (support.arrayBuffer) {\n      var viewClasses = ['[object Int8Array]', '[object Uint8Array]', '[object Uint8ClampedArray]', '[object Int16Array]', '[object Uint16Array]', '[object Int32Array]', '[object Uint32Array]', '[object Float32Array]', '[object Float64Array]'];\n\n      var isArrayBufferView = ArrayBuffer.isView || function (obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;\n      };\n    }\n\n    function normalizeName(name) {\n      if (typeof name !== 'string') {\n        name = String(name);\n      }\n\n      if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n        throw new TypeError('Invalid character in header field name');\n      }\n\n      return name.toLowerCase();\n    }\n\n    function normalizeValue(value) {\n      if (typeof value !== 'string') {\n        value = String(value);\n      }\n\n      return value;\n    } // Build a destructive iterator for the value list\n\n\n    function iteratorFor(items) {\n      var iterator = {\n        next: function next() {\n          var value = items.shift();\n          return {\n            done: value === undefined,\n            value: value\n          };\n        }\n      };\n\n      if (support.iterable) {\n        iterator[Symbol.iterator] = function () {\n          return iterator;\n        };\n      }\n\n      return iterator;\n    }\n\n    function Headers(headers) {\n      this.map = {};\n\n      if (headers instanceof Headers) {\n        headers.forEach(function (value, name) {\n          this.append(name, value);\n        }, this);\n      } else if (Array.isArray(headers)) {\n        headers.forEach(function (header) {\n          this.append(header[0], header[1]);\n        }, this);\n      } else if (headers) {\n        Object.getOwnPropertyNames(headers).forEach(function (name) {\n          this.append(name, headers[name]);\n        }, this);\n      }\n    }\n\n    Headers.prototype.append = function (name, value) {\n      name = normalizeName(name);\n      value = normalizeValue(value);\n      var oldValue = this.map[name];\n      this.map[name] = oldValue ? oldValue + ', ' + value : value;\n    };\n\n    Headers.prototype['delete'] = function (name) {\n      delete this.map[normalizeName(name)];\n    };\n\n    Headers.prototype.get = function (name) {\n      name = normalizeName(name);\n      return this.has(name) ? this.map[name] : null;\n    };\n\n    Headers.prototype.has = function (name) {\n      return this.map.hasOwnProperty(normalizeName(name));\n    };\n\n    Headers.prototype.set = function (name, value) {\n      this.map[normalizeName(name)] = normalizeValue(value);\n    };\n\n    Headers.prototype.forEach = function (callback, thisArg) {\n      for (var name in this.map) {\n        if (this.map.hasOwnProperty(name)) {\n          callback.call(thisArg, this.map[name], name, this);\n        }\n      }\n    };\n\n    Headers.prototype.keys = function () {\n      var items = [];\n      this.forEach(function (value, name) {\n        items.push(name);\n      });\n      return iteratorFor(items);\n    };\n\n    Headers.prototype.values = function () {\n      var items = [];\n      this.forEach(function (value) {\n        items.push(value);\n      });\n      return iteratorFor(items);\n    };\n\n    Headers.prototype.entries = function () {\n      var items = [];\n      this.forEach(function (value, name) {\n        items.push([name, value]);\n      });\n      return iteratorFor(items);\n    };\n\n    if (support.iterable) {\n      Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n    }\n\n    function consumed(body) {\n      if (body.bodyUsed) {\n        return Promise.reject(new TypeError('Already read'));\n      }\n\n      body.bodyUsed = true;\n    }\n\n    function fileReaderReady(reader) {\n      return new Promise(function (resolve, reject) {\n        reader.onload = function () {\n          resolve(reader.result);\n        };\n\n        reader.onerror = function () {\n          reject(reader.error);\n        };\n      });\n    }\n\n    function readBlobAsArrayBuffer(blob) {\n      var reader = new FileReader();\n      var promise = fileReaderReady(reader);\n      reader.readAsArrayBuffer(blob);\n      return promise;\n    }\n\n    function readBlobAsText(blob) {\n      var reader = new FileReader();\n      var promise = fileReaderReady(reader);\n      reader.readAsText(blob);\n      return promise;\n    }\n\n    function readArrayBufferAsText(buf) {\n      var view = new Uint8Array(buf);\n      var chars = new Array(view.length);\n\n      for (var i = 0; i < view.length; i++) {\n        chars[i] = String.fromCharCode(view[i]);\n      }\n\n      return chars.join('');\n    }\n\n    function bufferClone(buf) {\n      if (buf.slice) {\n        return buf.slice(0);\n      } else {\n        var view = new Uint8Array(buf.byteLength);\n        view.set(new Uint8Array(buf));\n        return view.buffer;\n      }\n    }\n\n    function Body() {\n      this.bodyUsed = false;\n\n      this._initBody = function (body) {\n        this._bodyInit = body;\n\n        if (!body) {\n          this._bodyText = '';\n        } else if (typeof body === 'string') {\n          this._bodyText = body;\n        } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n          this._bodyBlob = body;\n        } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n          this._bodyFormData = body;\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this._bodyText = body.toString();\n        } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n          this._bodyArrayBuffer = bufferClone(body.buffer); // IE 10-11 can't handle a DataView body.\n\n          this._bodyInit = new Blob([this._bodyArrayBuffer]);\n        } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n          this._bodyArrayBuffer = bufferClone(body);\n        } else {\n          this._bodyText = body = Object.prototype.toString.call(body);\n        }\n\n        if (!this.headers.get('content-type')) {\n          if (typeof body === 'string') {\n            this.headers.set('content-type', 'text/plain;charset=UTF-8');\n          } else if (this._bodyBlob && this._bodyBlob.type) {\n            this.headers.set('content-type', this._bodyBlob.type);\n          } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n            this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n          }\n        }\n      };\n\n      if (support.blob) {\n        this.blob = function () {\n          var rejected = consumed(this);\n\n          if (rejected) {\n            return rejected;\n          }\n\n          if (this._bodyBlob) {\n            return Promise.resolve(this._bodyBlob);\n          } else if (this._bodyArrayBuffer) {\n            return Promise.resolve(new Blob([this._bodyArrayBuffer]));\n          } else if (this._bodyFormData) {\n            throw new Error('could not read FormData body as blob');\n          } else {\n            return Promise.resolve(new Blob([this._bodyText]));\n          }\n        };\n\n        this.arrayBuffer = function () {\n          if (this._bodyArrayBuffer) {\n            return consumed(this) || Promise.resolve(this._bodyArrayBuffer);\n          } else {\n            return this.blob().then(readBlobAsArrayBuffer);\n          }\n        };\n      }\n\n      this.text = function () {\n        var rejected = consumed(this);\n\n        if (rejected) {\n          return rejected;\n        }\n\n        if (this._bodyBlob) {\n          return readBlobAsText(this._bodyBlob);\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as text');\n        } else {\n          return Promise.resolve(this._bodyText);\n        }\n      };\n\n      if (support.formData) {\n        this.formData = function () {\n          return this.text().then(decode);\n        };\n      }\n\n      this.json = function () {\n        return this.text().then(JSON.parse);\n      };\n\n      return this;\n    } // HTTP methods whose capitalization should be normalized\n\n\n    var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n    function normalizeMethod(method) {\n      var upcased = method.toUpperCase();\n      return methods.indexOf(upcased) > -1 ? upcased : method;\n    }\n\n    function Request(input, options) {\n      options = options || {};\n      var body = options.body;\n\n      if (input instanceof Request) {\n        if (input.bodyUsed) {\n          throw new TypeError('Already read');\n        }\n\n        this.url = input.url;\n        this.credentials = input.credentials;\n\n        if (!options.headers) {\n          this.headers = new Headers(input.headers);\n        }\n\n        this.method = input.method;\n        this.mode = input.mode;\n        this.signal = input.signal;\n\n        if (!body && input._bodyInit != null) {\n          body = input._bodyInit;\n          input.bodyUsed = true;\n        }\n      } else {\n        this.url = String(input);\n      }\n\n      this.credentials = options.credentials || this.credentials || 'same-origin';\n\n      if (options.headers || !this.headers) {\n        this.headers = new Headers(options.headers);\n      }\n\n      this.method = normalizeMethod(options.method || this.method || 'GET');\n      this.mode = options.mode || this.mode || null;\n      this.signal = options.signal || this.signal;\n      this.referrer = null;\n\n      if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n        throw new TypeError('Body not allowed for GET or HEAD requests');\n      }\n\n      this._initBody(body);\n    }\n\n    Request.prototype.clone = function () {\n      return new Request(this, {\n        body: this._bodyInit\n      });\n    };\n\n    function decode(body) {\n      var form = new FormData();\n      body.trim().split('&').forEach(function (bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n      return form;\n    }\n\n    function parseHeaders(rawHeaders) {\n      var headers = new Headers(); // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n      // https://tools.ietf.org/html/rfc7230#section-3.2\n\n      var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n      preProcessedHeaders.split(/\\r?\\n/).forEach(function (line) {\n        var parts = line.split(':');\n        var key = parts.shift().trim();\n\n        if (key) {\n          var value = parts.join(':').trim();\n          headers.append(key, value);\n        }\n      });\n      return headers;\n    }\n\n    Body.call(Request.prototype);\n\n    function Response(bodyInit, options) {\n      if (!options) {\n        options = {};\n      }\n\n      this.type = 'default';\n      this.status = options.status === undefined ? 200 : options.status;\n      this.ok = this.status >= 200 && this.status < 300;\n      this.statusText = 'statusText' in options ? options.statusText : 'OK';\n      this.headers = new Headers(options.headers);\n      this.url = options.url || '';\n\n      this._initBody(bodyInit);\n    }\n\n    Body.call(Response.prototype);\n\n    Response.prototype.clone = function () {\n      return new Response(this._bodyInit, {\n        status: this.status,\n        statusText: this.statusText,\n        headers: new Headers(this.headers),\n        url: this.url\n      });\n    };\n\n    Response.error = function () {\n      var response = new Response(null, {\n        status: 0,\n        statusText: ''\n      });\n      response.type = 'error';\n      return response;\n    };\n\n    var redirectStatuses = [301, 302, 303, 307, 308];\n\n    Response.redirect = function (url, status) {\n      if (redirectStatuses.indexOf(status) === -1) {\n        throw new RangeError('Invalid status code');\n      }\n\n      return new Response(null, {\n        status: status,\n        headers: {\n          location: url\n        }\n      });\n    };\n\n    exports.DOMException = self.DOMException;\n\n    try {\n      new exports.DOMException();\n    } catch (err) {\n      exports.DOMException = function (message, name) {\n        this.message = message;\n        this.name = name;\n        var error = Error(message);\n        this.stack = error.stack;\n      };\n\n      exports.DOMException.prototype = Object.create(Error.prototype);\n      exports.DOMException.prototype.constructor = exports.DOMException;\n    }\n\n    function fetch(input, init) {\n      return new Promise(function (resolve, reject) {\n        var request = new Request(input, init);\n\n        if (request.signal && request.signal.aborted) {\n          return reject(new exports.DOMException('Aborted', 'AbortError'));\n        }\n\n        var xhr = new XMLHttpRequest();\n\n        function abortXhr() {\n          xhr.abort();\n        }\n\n        xhr.onload = function () {\n          var options = {\n            status: xhr.status,\n            statusText: xhr.statusText,\n            headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n          };\n          options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n          var body = 'response' in xhr ? xhr.response : xhr.responseText;\n          resolve(new Response(body, options));\n        };\n\n        xhr.onerror = function () {\n          reject(new TypeError('Network request failed'));\n        };\n\n        xhr.ontimeout = function () {\n          reject(new TypeError('Network request failed'));\n        };\n\n        xhr.onabort = function () {\n          reject(new exports.DOMException('Aborted', 'AbortError'));\n        };\n\n        xhr.open(request.method, request.url, true);\n\n        if (request.credentials === 'include') {\n          xhr.withCredentials = true;\n        } else if (request.credentials === 'omit') {\n          xhr.withCredentials = false;\n        }\n\n        if ('responseType' in xhr && support.blob) {\n          xhr.responseType = 'blob';\n        }\n\n        request.headers.forEach(function (value, name) {\n          xhr.setRequestHeader(name, value);\n        });\n\n        if (request.signal) {\n          request.signal.addEventListener('abort', abortXhr);\n\n          xhr.onreadystatechange = function () {\n            // DONE (success or failure)\n            if (xhr.readyState === 4) {\n              request.signal.removeEventListener('abort', abortXhr);\n            }\n          };\n        }\n\n        xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n      });\n    }\n\n    fetch.polyfill = true;\n\n    if (!self.fetch) {\n      self.fetch = fetch;\n      self.Headers = Headers;\n      self.Request = Request;\n      self.Response = Response;\n    }\n\n    exports.Headers = Headers;\n    exports.Request = Request;\n    exports.Response = Response;\n    exports.fetch = fetch;\n    Object.defineProperty(exports, '__esModule', {\n      value: true\n    });\n    return exports;\n  }({});\n})(__self__);\n\n__self__.fetch.ponyfill = true; // Remove \"polyfill\" property added by whatwg-fetch\n\ndelete __self__.fetch.polyfill; // Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\n\nvar ctx = __self__; // this line disable service worker support temporarily\n\nexports = ctx.fetch; // To enable: import fetch from 'cross-fetch'\n\nexports.default = ctx.fetch; // For TypeScript consumers without esModuleInterop.\n\nexports.fetch = ctx.fetch; // To enable: import {fetch} from 'cross-fetch'\n\nexports.Headers = ctx.Headers;\nexports.Request = ctx.Request;\nexports.Response = ctx.Response;\nmodule.exports = exports;","\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0; // TODO(v5): Remove legacy setting and default to \"always\"\n\nvar applyTrailingSlashOption = function applyTrailingSlashOption(input, option) {\n  if (option === void 0) {\n    option = \"legacy\";\n  }\n\n  var hasHtmlSuffix = input.endsWith(\".html\");\n  if (input === \"/\") return input;\n\n  if (hasHtmlSuffix) {\n    option = \"never\";\n  }\n\n  if (option === \"always\") {\n    return input.endsWith(\"/\") ? input : input + \"/\";\n  }\n\n  if (option === \"never\") {\n    return input.endsWith(\"/\") ? input.slice(0, -1) : input;\n  }\n\n  return input;\n};\n\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nmodule.exports = Object.assign;","'use strict';\n\nvar reactIs = require('react-is');\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar consoleLogger = {\n  type: 'logger',\n  log: function log(args) {\n    this.output('log', args);\n  },\n  warn: function warn(args) {\n    this.output('warn', args);\n  },\n  error: function error(args) {\n    this.output('error', args);\n  },\n  output: function output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\n\nvar Logger = function () {\n  function Logger(concreteLogger) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Logger);\n\n    this.init(concreteLogger, options);\n  }\n\n  _createClass(Logger, [{\n    key: \"init\",\n    value: function init(concreteLogger) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      this.prefix = options.prefix || 'i18next:';\n      this.logger = concreteLogger || consoleLogger;\n      this.options = options;\n      this.debug = options.debug;\n    }\n  }, {\n    key: \"setDebug\",\n    value: function setDebug(bool) {\n      this.debug = bool;\n    }\n  }, {\n    key: \"log\",\n    value: function log() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return this.forward(args, 'log', '', true);\n    }\n  }, {\n    key: \"warn\",\n    value: function warn() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return this.forward(args, 'warn', '', true);\n    }\n  }, {\n    key: \"error\",\n    value: function error() {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return this.forward(args, 'error', '');\n    }\n  }, {\n    key: \"deprecate\",\n    value: function deprecate() {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n    }\n  }, {\n    key: \"forward\",\n    value: function forward(args, lvl, prefix, debugOnly) {\n      if (debugOnly && !this.debug) return null;\n      if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n      return this.logger[lvl](args);\n    }\n  }, {\n    key: \"create\",\n    value: function create(moduleName) {\n      return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n        prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n      }), this.options));\n    }\n  }]);\n\n  return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n  function EventEmitter() {\n    _classCallCheck(this, EventEmitter);\n\n    this.observers = {};\n  }\n\n  _createClass(EventEmitter, [{\n    key: \"on\",\n    value: function on(events, listener) {\n      var _this = this;\n\n      events.split(' ').forEach(function (event) {\n        _this.observers[event] = _this.observers[event] || [];\n\n        _this.observers[event].push(listener);\n      });\n      return this;\n    }\n  }, {\n    key: \"off\",\n    value: function off(event, listener) {\n      if (!this.observers[event]) return;\n\n      if (!listener) {\n        delete this.observers[event];\n        return;\n      }\n\n      this.observers[event] = this.observers[event].filter(function (l) {\n        return l !== listener;\n      });\n    }\n  }, {\n    key: \"emit\",\n    value: function emit(event) {\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      if (this.observers[event]) {\n        var cloned = [].concat(this.observers[event]);\n        cloned.forEach(function (observer) {\n          observer.apply(void 0, args);\n        });\n      }\n\n      if (this.observers['*']) {\n        var _cloned = [].concat(this.observers['*']);\n\n        _cloned.forEach(function (observer) {\n          observer.apply(observer, [event].concat(args));\n        });\n      }\n    }\n  }]);\n\n  return EventEmitter;\n}();\n\nfunction defer() {\n  var res;\n  var rej;\n  var promise = new Promise(function (resolve, reject) {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n}\n\nfunction makeString(object) {\n  if (object == null) return '';\n  return '' + object;\n}\n\nfunction copy(a, s, t) {\n  a.forEach(function (m) {\n    if (s[m]) t[m] = s[m];\n  });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n  }\n\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n\n  var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n  while (stack.length > 1) {\n    if (canNotTraverseDeeper()) return {};\n    var key = cleanKey(stack.shift());\n    if (!object[key] && Empty) object[key] = new Empty();\n\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n  }\n\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack.shift())\n  };\n}\n\nfunction setPath(object, path, newValue) {\n  var _getLastOfPath = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath.obj,\n      k = _getLastOfPath.k;\n\n  obj[k] = newValue;\n}\n\nfunction pushPath(object, path, newValue, concat) {\n  var _getLastOfPath2 = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath2.obj,\n      k = _getLastOfPath2.k;\n\n  obj[k] = obj[k] || [];\n  if (concat) obj[k] = obj[k].concat(newValue);\n  if (!concat) obj[k].push(newValue);\n}\n\nfunction getPath(object, path) {\n  var _getLastOfPath3 = getLastOfPath(object, path),\n      obj = _getLastOfPath3.obj,\n      k = _getLastOfPath3.k;\n\n  if (!obj) return undefined;\n  return obj[k];\n}\n\nfunction getPathWithDefaults(data, defaultData, key) {\n  var value = getPath(data, key);\n\n  if (value !== undefined) {\n    return value;\n  }\n\n  return getPath(defaultData, key);\n}\n\nfunction deepExtend(target, source, overwrite) {\n  for (var prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n\n  return target;\n}\n\nfunction regexEscape(str) {\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\n\nfunction escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, function (s) {\n      return _entityMap[s];\n    });\n  }\n\n  return data;\n}\n\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\n\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  var possibleChars = chars.filter(function (c) {\n    return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n  });\n  if (possibleChars.length === 0) return true;\n  var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n    return c === '?' ? '\\\\?' : c;\n  }).join('|'), \")\"));\n  var matched = !r.test(key);\n\n  if (!matched) {\n    var ki = key.indexOf(keySeparator);\n\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n\n  return matched;\n}\n\nfunction ownKeys$1(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread$1(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys$1(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys$1(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction deepFind(obj, path) {\n  var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n  if (!obj) return undefined;\n  if (obj[path]) return obj[path];\n  var paths = path.split(keySeparator);\n  var current = obj;\n\n  for (var i = 0; i < paths.length; ++i) {\n    if (!current) return undefined;\n\n    if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n      return undefined;\n    }\n\n    if (current[paths[i]] === undefined) {\n      var j = 2;\n      var p = paths.slice(i, i + j).join(keySeparator);\n      var mix = current[p];\n\n      while (mix === undefined && paths.length > i + j) {\n        j++;\n        p = paths.slice(i, i + j).join(keySeparator);\n        mix = current[p];\n      }\n\n      if (mix === undefined) return undefined;\n\n      if (path.endsWith(p)) {\n        if (typeof mix === 'string') return mix;\n        if (p && typeof mix[p] === 'string') return mix[p];\n      }\n\n      var joinedPath = paths.slice(i + j).join(keySeparator);\n      if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n      return undefined;\n    }\n\n    current = current[paths[i]];\n  }\n\n  return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n  _inherits(ResourceStore, _EventEmitter);\n\n  var _super = _createSuper(ResourceStore);\n\n  function ResourceStore(data) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n\n    _classCallCheck(this, ResourceStore);\n\n    _this = _super.call(this);\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.data = data || {};\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    if (_this.options.ignoreJSONStructure === undefined) {\n      _this.options.ignoreJSONStructure = true;\n    }\n\n    return _this;\n  }\n\n  _createClass(ResourceStore, [{\n    key: \"addNamespaces\",\n    value: function addNamespaces(ns) {\n      if (this.options.ns.indexOf(ns) < 0) {\n        this.options.ns.push(ns);\n      }\n    }\n  }, {\n    key: \"removeNamespaces\",\n    value: function removeNamespaces(ns) {\n      var index = this.options.ns.indexOf(ns);\n\n      if (index > -1) {\n        this.options.ns.splice(index, 1);\n      }\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(lng, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n      var path = [lng, ns];\n      if (key && typeof key !== 'string') path = path.concat(key);\n      if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n      }\n\n      var result = getPath(this.data, path);\n      if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n      return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n    }\n  }, {\n    key: \"addResource\",\n    value: function addResource(lng, ns, key, value) {\n      var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n        silent: false\n      };\n      var keySeparator = this.options.keySeparator;\n      if (keySeparator === undefined) keySeparator = '.';\n      var path = [lng, ns];\n      if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        value = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      setPath(this.data, path, value);\n      if (!options.silent) this.emit('added', lng, ns, key, value);\n    }\n  }, {\n    key: \"addResources\",\n    value: function addResources(lng, ns, resources) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n        silent: false\n      };\n\n      for (var m in resources) {\n        if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n          silent: true\n        });\n      }\n\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"addResourceBundle\",\n    value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n        silent: false\n      };\n      var path = [lng, ns];\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        deep = resources;\n        resources = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      var pack = getPath(this.data, path) || {};\n\n      if (deep) {\n        deepExtend(pack, resources, overwrite);\n      } else {\n        pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n      }\n\n      setPath(this.data, path, pack);\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"removeResourceBundle\",\n    value: function removeResourceBundle(lng, ns) {\n      if (this.hasResourceBundle(lng, ns)) {\n        delete this.data[lng][ns];\n      }\n\n      this.removeNamespaces(ns);\n      this.emit('removed', lng, ns);\n    }\n  }, {\n    key: \"hasResourceBundle\",\n    value: function hasResourceBundle(lng, ns) {\n      return this.getResource(lng, ns) !== undefined;\n    }\n  }, {\n    key: \"getResourceBundle\",\n    value: function getResourceBundle(lng, ns) {\n      if (!ns) ns = this.options.defaultNS;\n      if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n      return this.getResource(lng, ns);\n    }\n  }, {\n    key: \"getDataByLanguage\",\n    value: function getDataByLanguage(lng) {\n      return this.data[lng];\n    }\n  }, {\n    key: \"hasLanguageSomeTranslations\",\n    value: function hasLanguageSomeTranslations(lng) {\n      var data = this.getDataByLanguage(lng);\n      var n = data && Object.keys(data) || [];\n      return !!n.find(function (v) {\n        return data[v] && Object.keys(data[v]).length > 0;\n      });\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.data;\n    }\n  }]);\n\n  return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor: function addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle: function handle(processors, value, key, options, translator) {\n    var _this = this;\n\n    processors.forEach(function (processor) {\n      if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nfunction ownKeys$2(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread$2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys$2(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys$2(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _createSuper$1(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct$1();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _isNativeReflectConstruct$1() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n  _inherits(Translator, _EventEmitter);\n\n  var _super = _createSuper$1(Translator);\n\n  function Translator(services) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Translator);\n\n    _this = _super.call(this);\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    _this.logger = baseLogger.create('translator');\n    return _this;\n  }\n\n  _createClass(Translator, [{\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng) {\n      if (lng) this.language = lng;\n    }\n  }, {\n    key: \"exists\",\n    value: function exists(key) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        interpolation: {}\n      };\n\n      if (key === undefined || key === null) {\n        return false;\n      }\n\n      var resolved = this.resolve(key, options);\n      return resolved && resolved.res !== undefined;\n    }\n  }, {\n    key: \"extractFromKey\",\n    value: function extractFromKey(key, options) {\n      var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n      if (nsSeparator === undefined) nsSeparator = ':';\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var namespaces = options.ns || this.options.defaultNS || [];\n      var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n      var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n\n      if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n        var m = key.match(this.interpolator.nestingRegexp);\n\n        if (m && m.length > 0) {\n          return {\n            key: key,\n            namespaces: namespaces\n          };\n        }\n\n        var parts = key.split(nsSeparator);\n        if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n        key = parts.join(keySeparator);\n      }\n\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      return {\n        key: key,\n        namespaces: namespaces\n      };\n    }\n  }, {\n    key: \"translate\",\n    value: function translate(keys, options, lastKey) {\n      var _this2 = this;\n\n      if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n        options = this.options.overloadTranslationOptionHandler(arguments);\n      }\n\n      if (!options) options = {};\n      if (keys === undefined || keys === null) return '';\n      if (!Array.isArray(keys)) keys = [String(keys)];\n      var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n      var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n          key = _this$extractFromKey.key,\n          namespaces = _this$extractFromKey.namespaces;\n\n      var namespace = namespaces[namespaces.length - 1];\n      var lng = options.lng || this.language;\n      var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n      if (lng && lng.toLowerCase() === 'cimode') {\n        if (appendNamespaceToCIMode) {\n          var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n\n          if (returnDetails) {\n            resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n            return resolved;\n          }\n\n          return \"\".concat(namespace).concat(nsSeparator).concat(key);\n        }\n\n        if (returnDetails) {\n          resolved.res = key;\n          return resolved;\n        }\n\n        return key;\n      }\n\n      var resolved = this.resolve(keys, options);\n      var res = resolved && resolved.res;\n      var resUsedKey = resolved && resolved.usedKey || key;\n      var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n      var resType = Object.prototype.toString.apply(res);\n      var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n      var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n      var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n      var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n      if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n        if (!options.returnObjects && !this.options.returnObjects) {\n          if (!this.options.returnedObjectHandler) {\n            this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n          }\n\n          var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n            ns: namespaces\n          })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n\n          if (returnDetails) {\n            resolved.res = r;\n            return resolved;\n          }\n\n          return r;\n        }\n\n        if (keySeparator) {\n          var resTypeIsArray = resType === '[object Array]';\n          var copy = resTypeIsArray ? [] : {};\n          var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n          for (var m in res) {\n            if (Object.prototype.hasOwnProperty.call(res, m)) {\n              var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n              copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n                joinArrays: false,\n                ns: namespaces\n              }));\n              if (copy[m] === deepKey) copy[m] = res[m];\n            }\n          }\n\n          res = copy;\n        }\n      } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n        res = res.join(joinArrays);\n        if (res) res = this.extendTranslation(res, keys, options, lastKey);\n      } else {\n        var usedDefault = false;\n        var usedKey = false;\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var hasDefaultValue = Translator.hasDefaultValue(options);\n        var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n        var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n        if (!this.isValidLookup(res) && hasDefaultValue) {\n          usedDefault = true;\n          res = defaultValue;\n        }\n\n        if (!this.isValidLookup(res)) {\n          usedKey = true;\n          res = key;\n        }\n\n        var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n        var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n        var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n        if (usedKey || usedDefault || updateMissing) {\n          this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n          if (keySeparator) {\n            var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n              keySeparator: false\n            }));\n            if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n          }\n\n          var lngs = [];\n          var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n          if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n            for (var i = 0; i < fallbackLngs.length; i++) {\n              lngs.push(fallbackLngs[i]);\n            }\n          } else if (this.options.saveMissingTo === 'all') {\n            lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n          } else {\n            lngs.push(options.lng || this.language);\n          }\n\n          var send = function send(l, k, specificDefaultValue) {\n            var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n\n            if (_this2.options.missingKeyHandler) {\n              _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n            } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n              _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n            }\n\n            _this2.emit('missingKey', l, namespace, k, res);\n          };\n\n          if (this.options.saveMissing) {\n            if (this.options.saveMissingPlurals && needsPluralHandling) {\n              lngs.forEach(function (language) {\n                _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n                  send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n                });\n              });\n            } else {\n              send(lngs, key, defaultValue);\n            }\n          }\n        }\n\n        res = this.extendTranslation(res, keys, options, resolved, lastKey);\n        if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n\n        if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n          if (this.options.compatibilityAPI !== 'v1') {\n            res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n          } else {\n            res = this.options.parseMissingKeyHandler(res);\n          }\n        }\n      }\n\n      if (returnDetails) {\n        resolved.res = res;\n        return resolved;\n      }\n\n      return res;\n    }\n  }, {\n    key: \"extendTranslation\",\n    value: function extendTranslation(res, key, options, resolved, lastKey) {\n      var _this3 = this;\n\n      if (this.i18nFormat && this.i18nFormat.parse) {\n        res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n          resolved: resolved\n        });\n      } else if (!options.skipInterpolation) {\n        if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n          interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n        }));\n        var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n        var nestBef;\n\n        if (skipOnVariables) {\n          var nb = res.match(this.interpolator.nestingRegexp);\n          nestBef = nb && nb.length;\n        }\n\n        var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n        if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n        res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n        if (skipOnVariables) {\n          var na = res.match(this.interpolator.nestingRegexp);\n          var nestAft = na && na.length;\n          if (nestBef < nestAft) options.nest = false;\n        }\n\n        if (options.nest !== false) res = this.interpolator.nest(res, function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n\n          if (lastKey && lastKey[0] === args[0] && !options.context) {\n            _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n            return null;\n          }\n\n          return _this3.translate.apply(_this3, args.concat([key]));\n        }, options);\n        if (options.interpolation) this.interpolator.reset();\n      }\n\n      var postProcess = options.postProcess || this.options.postProcess;\n      var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n      if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n        res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n          i18nResolved: resolved\n        }, options) : options, this);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"resolve\",\n    value: function resolve(keys) {\n      var _this4 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var found;\n      var usedKey;\n      var exactUsedKey;\n      var usedLng;\n      var usedNS;\n      if (typeof keys === 'string') keys = [keys];\n      keys.forEach(function (k) {\n        if (_this4.isValidLookup(found)) return;\n\n        var extracted = _this4.extractFromKey(k, options);\n\n        var key = extracted.key;\n        usedKey = key;\n        var namespaces = extracted.namespaces;\n        if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n        var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n\n        var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n        var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n        namespaces.forEach(function (ns) {\n          if (_this4.isValidLookup(found)) return;\n          usedNS = ns;\n\n          if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n            checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n            _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n          }\n\n          codes.forEach(function (code) {\n            if (_this4.isValidLookup(found)) return;\n            usedLng = code;\n            var finalKeys = [key];\n\n            if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n              _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n            } else {\n              var pluralSuffix;\n              if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n              var zeroSuffix = '_zero';\n\n              if (needsPluralHandling) {\n                finalKeys.push(key + pluralSuffix);\n\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(key + zeroSuffix);\n                }\n              }\n\n              if (needsContextHandling) {\n                var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n                finalKeys.push(contextKey);\n\n                if (needsPluralHandling) {\n                  finalKeys.push(contextKey + pluralSuffix);\n\n                  if (needsZeroSuffixLookup) {\n                    finalKeys.push(contextKey + zeroSuffix);\n                  }\n                }\n              }\n            }\n\n            var possibleKey;\n\n            while (possibleKey = finalKeys.pop()) {\n              if (!_this4.isValidLookup(found)) {\n                exactUsedKey = possibleKey;\n                found = _this4.getResource(code, ns, possibleKey, options);\n              }\n            }\n          });\n        });\n      });\n      return {\n        res: found,\n        usedKey: usedKey,\n        exactUsedKey: exactUsedKey,\n        usedLng: usedLng,\n        usedNS: usedNS\n      };\n    }\n  }, {\n    key: \"isValidLookup\",\n    value: function isValidLookup(res) {\n      return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(code, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n      return this.resourceStore.getResource(code, ns, key, options);\n    }\n  }], [{\n    key: \"hasDefaultValue\",\n    value: function hasDefaultValue(options) {\n      var prefix = 'defaultValue';\n\n      for (var option in options) {\n        if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n  }]);\n\n  return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n  function LanguageUtil(options) {\n    _classCallCheck(this, LanguageUtil);\n\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n\n  _createClass(LanguageUtil, [{\n    key: \"getScriptPartFromCode\",\n    value: function getScriptPartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return null;\n      var p = code.split('-');\n      if (p.length === 2) return null;\n      p.pop();\n      if (p[p.length - 1].toLowerCase() === 'x') return null;\n      return this.formatLanguageCode(p.join('-'));\n    }\n  }, {\n    key: \"getLanguagePartFromCode\",\n    value: function getLanguagePartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return code;\n      var p = code.split('-');\n      return this.formatLanguageCode(p[0]);\n    }\n  }, {\n    key: \"formatLanguageCode\",\n    value: function formatLanguageCode(code) {\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n        var p = code.split('-');\n\n        if (this.options.lowerCaseLng) {\n          p = p.map(function (part) {\n            return part.toLowerCase();\n          });\n        } else if (p.length === 2) {\n          p[0] = p[0].toLowerCase();\n          p[1] = p[1].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        } else if (p.length === 3) {\n          p[0] = p[0].toLowerCase();\n          if (p[1].length === 2) p[1] = p[1].toUpperCase();\n          if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n          if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n        }\n\n        return p.join('-');\n      }\n\n      return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n    }\n  }, {\n    key: \"isSupportedCode\",\n    value: function isSupportedCode(code) {\n      if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n        code = this.getLanguagePartFromCode(code);\n      }\n\n      return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n    }\n  }, {\n    key: \"getBestMatchFromCodes\",\n    value: function getBestMatchFromCodes(codes) {\n      var _this = this;\n\n      if (!codes) return null;\n      var found;\n      codes.forEach(function (code) {\n        if (found) return;\n\n        var cleanedLng = _this.formatLanguageCode(code);\n\n        if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n      });\n\n      if (!found && this.options.supportedLngs) {\n        codes.forEach(function (code) {\n          if (found) return;\n\n          var lngOnly = _this.getLanguagePartFromCode(code);\n\n          if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n          found = _this.options.supportedLngs.find(function (supportedLng) {\n            if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n          });\n        });\n      }\n\n      if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n      return found;\n    }\n  }, {\n    key: \"getFallbackCodes\",\n    value: function getFallbackCodes(fallbacks, code) {\n      if (!fallbacks) return [];\n      if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n      if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n      if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n      if (!code) return fallbacks[\"default\"] || [];\n      var found = fallbacks[code];\n      if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n      if (!found) found = fallbacks[this.formatLanguageCode(code)];\n      if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n      if (!found) found = fallbacks[\"default\"];\n      return found || [];\n    }\n  }, {\n    key: \"toResolveHierarchy\",\n    value: function toResolveHierarchy(code, fallbackCode) {\n      var _this2 = this;\n\n      var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n      var codes = [];\n\n      var addCode = function addCode(c) {\n        if (!c) return;\n\n        if (_this2.isSupportedCode(c)) {\n          codes.push(c);\n        } else {\n          _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n        }\n      };\n\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n        if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n        if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n      } else if (typeof code === 'string') {\n        addCode(this.formatLanguageCode(code));\n      }\n\n      fallbackCodes.forEach(function (fc) {\n        if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n      });\n      return codes;\n    }\n  }]);\n\n  return LanguageUtil;\n}();\n\nvar sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nvar _rulesPluralsTypes = {\n  1: function _(n) {\n    return Number(n > 1);\n  },\n  2: function _(n) {\n    return Number(n != 1);\n  },\n  3: function _(n) {\n    return 0;\n  },\n  4: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function _(n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function _(n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function _(n) {\n    return Number(n >= 2);\n  },\n  10: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function _(n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function _(n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function _(n) {\n    return Number(n !== 0);\n  },\n  14: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function _(n) {\n    return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n  },\n  18: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function _(n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  },\n  22: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n  }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\n\nfunction createRules() {\n  var rules = {};\n  sets.forEach(function (set) {\n    set.lngs.forEach(function (l) {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\n\nvar PluralResolver = function () {\n  function PluralResolver(languageUtils) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, PluralResolver);\n\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n\n    if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n      this.options.compatibilityJSON = 'v3';\n      this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n    }\n\n    this.rules = createRules();\n  }\n\n  _createClass(PluralResolver, [{\n    key: \"addRule\",\n    value: function addRule(lng, obj) {\n      this.rules[lng] = obj;\n    }\n  }, {\n    key: \"getRule\",\n    value: function getRule(code) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (this.shouldUseIntlApi()) {\n        try {\n          return new Intl.PluralRules(code, {\n            type: options.ordinal ? 'ordinal' : 'cardinal'\n          });\n        } catch (_unused) {\n          return;\n        }\n      }\n\n      return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n    }\n  }, {\n    key: \"needsPlural\",\n    value: function needsPlural(code) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var rule = this.getRule(code, options);\n\n      if (this.shouldUseIntlApi()) {\n        return rule && rule.resolvedOptions().pluralCategories.length > 1;\n      }\n\n      return rule && rule.numbers.length > 1;\n    }\n  }, {\n    key: \"getPluralFormsOfKey\",\n    value: function getPluralFormsOfKey(code, key) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      return this.getSuffixes(code, options).map(function (suffix) {\n        return \"\".concat(key).concat(suffix);\n      });\n    }\n  }, {\n    key: \"getSuffixes\",\n    value: function getSuffixes(code) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var rule = this.getRule(code, options);\n\n      if (!rule) {\n        return [];\n      }\n\n      if (this.shouldUseIntlApi()) {\n        return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n          return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n        }).map(function (pluralCategory) {\n          return \"\".concat(_this.options.prepend).concat(pluralCategory);\n        });\n      }\n\n      return rule.numbers.map(function (number) {\n        return _this.getSuffix(code, number, options);\n      });\n    }\n  }, {\n    key: \"getSuffix\",\n    value: function getSuffix(code, count) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var rule = this.getRule(code, options);\n\n      if (rule) {\n        if (this.shouldUseIntlApi()) {\n          return \"\".concat(this.options.prepend).concat(rule.select(count));\n        }\n\n        return this.getSuffixRetroCompatible(rule, count);\n      }\n\n      this.logger.warn(\"no plural rule found for: \".concat(code));\n      return '';\n    }\n  }, {\n    key: \"getSuffixRetroCompatible\",\n    value: function getSuffixRetroCompatible(rule, count) {\n      var _this2 = this;\n\n      var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n      var suffix = rule.numbers[idx];\n\n      if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n        if (suffix === 2) {\n          suffix = 'plural';\n        } else if (suffix === 1) {\n          suffix = '';\n        }\n      }\n\n      var returnSuffix = function returnSuffix() {\n        return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n      };\n\n      if (this.options.compatibilityJSON === 'v1') {\n        if (suffix === 1) return '';\n        if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n        return returnSuffix();\n      } else if (this.options.compatibilityJSON === 'v2') {\n        return returnSuffix();\n      } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n        return returnSuffix();\n      }\n\n      return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n    }\n  }, {\n    key: \"shouldUseIntlApi\",\n    value: function shouldUseIntlApi() {\n      return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n    }\n  }]);\n\n  return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread$3(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys$3(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys$3(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar Interpolator = function () {\n  function Interpolator() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Interpolator);\n\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n\n    this.format = options.interpolation && options.interpolation.format || function (value) {\n      return value;\n    };\n\n    this.init(options);\n  }\n\n  _createClass(Interpolator, [{\n    key: \"init\",\n    value: function init() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (!options.interpolation) options.interpolation = {\n        escapeValue: true\n      };\n      var iOpts = options.interpolation;\n      this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n      this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n      this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n      this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n      this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n      this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n      this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n      this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n      this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n      this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n      this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n      this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n      this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n      this.resetRegExp();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this.options) this.init(this.options);\n    }\n  }, {\n    key: \"resetRegExp\",\n    value: function resetRegExp() {\n      var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n      this.regexp = new RegExp(regexpStr, 'g');\n      var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n      this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n      var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n      this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n    }\n  }, {\n    key: \"interpolate\",\n    value: function interpolate(str, data, lng, options) {\n      var _this = this;\n\n      var match;\n      var value;\n      var replaces;\n      var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n      function regexSafe(val) {\n        return val.replace(/\\$/g, '$$$$');\n      }\n\n      var handleFormat = function handleFormat(key) {\n        if (key.indexOf(_this.formatSeparator) < 0) {\n          var path = getPathWithDefaults(data, defaultData, key);\n          return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n            interpolationkey: key\n          })) : path;\n        }\n\n        var p = key.split(_this.formatSeparator);\n        var k = p.shift().trim();\n        var f = p.join(_this.formatSeparator).trim();\n        return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n          interpolationkey: k\n        }));\n      };\n\n      this.resetRegExp();\n      var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n      var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n      var todos = [{\n        regex: this.regexpUnescape,\n        safeValue: function safeValue(val) {\n          return regexSafe(val);\n        }\n      }, {\n        regex: this.regexp,\n        safeValue: function safeValue(val) {\n          return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n        }\n      }];\n      todos.forEach(function (todo) {\n        replaces = 0;\n\n        while (match = todo.regex.exec(str)) {\n          var matchedVar = match[1].trim();\n          value = handleFormat(matchedVar);\n\n          if (value === undefined) {\n            if (typeof missingInterpolationHandler === 'function') {\n              var temp = missingInterpolationHandler(str, match, options);\n              value = typeof temp === 'string' ? temp : '';\n            } else if (options && options.hasOwnProperty(matchedVar)) {\n              value = '';\n            } else if (skipOnVariables) {\n              value = match[0];\n              continue;\n            } else {\n              _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n\n              value = '';\n            }\n          } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n            value = makeString(value);\n          }\n\n          var safeValue = todo.safeValue(value);\n          str = str.replace(match[0], safeValue);\n\n          if (skipOnVariables) {\n            todo.regex.lastIndex += value.length;\n            todo.regex.lastIndex -= match[0].length;\n          } else {\n            todo.regex.lastIndex = 0;\n          }\n\n          replaces++;\n\n          if (replaces >= _this.maxReplaces) {\n            break;\n          }\n        }\n      });\n      return str;\n    }\n  }, {\n    key: \"nest\",\n    value: function nest(str, fc) {\n      var _this2 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var match;\n      var value;\n\n      var clonedOptions = _objectSpread$3({}, options);\n\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n\n      function handleHasOptions(key, inheritedOptions) {\n        var sep = this.nestingOptionsSeparator;\n        if (key.indexOf(sep) < 0) return key;\n        var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n        var optionsString = \"{\".concat(c[1]);\n        key = c[0];\n        optionsString = this.interpolate(optionsString, clonedOptions);\n        optionsString = optionsString.replace(/'/g, '\"');\n\n        try {\n          clonedOptions = JSON.parse(optionsString);\n          if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n        } catch (e) {\n          this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n          return \"\".concat(key).concat(sep).concat(optionsString);\n        }\n\n        delete clonedOptions.defaultValue;\n        return key;\n      }\n\n      while (match = this.nestingRegexp.exec(str)) {\n        var formatters = [];\n        var doReduce = false;\n\n        if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n          var r = match[1].split(this.formatSeparator).map(function (elem) {\n            return elem.trim();\n          });\n          match[1] = r.shift();\n          formatters = r;\n          doReduce = true;\n        }\n\n        value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n        if (value && match[0] === str && typeof value !== 'string') return value;\n        if (typeof value !== 'string') value = makeString(value);\n\n        if (!value) {\n          this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n          value = '';\n        }\n\n        if (doReduce) {\n          value = formatters.reduce(function (v, f) {\n            return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n              interpolationkey: match[1].trim()\n            }));\n          }, value.trim());\n        }\n\n        str = str.replace(match[0], value);\n        this.regexp.lastIndex = 0;\n      }\n\n      return str;\n    }\n  }]);\n\n  return Interpolator;\n}();\n\nfunction ownKeys$4(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread$4(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys$4(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys$4(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction parseFormatStr(formatStr) {\n  var formatName = formatStr.toLowerCase().trim();\n  var formatOptions = {};\n\n  if (formatStr.indexOf('(') > -1) {\n    var p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    var optStr = p[1].substring(0, p[1].length - 1);\n\n    if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      var opts = optStr.split(';');\n      opts.forEach(function (opt) {\n        if (!opt) return;\n\n        var _opt$split = opt.split(':'),\n            _opt$split2 = _toArray(_opt$split),\n            key = _opt$split2[0],\n            rest = _opt$split2.slice(1);\n\n        var val = rest.join(':');\n        if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val.trim();\n        if (val.trim() === 'false') formatOptions[key.trim()] = false;\n        if (val.trim() === 'true') formatOptions[key.trim()] = true;\n        if (!isNaN(val.trim())) formatOptions[key.trim()] = parseInt(val.trim(), 10);\n      });\n    }\n  }\n\n  return {\n    formatName: formatName,\n    formatOptions: formatOptions\n  };\n}\n\nvar Formatter = function () {\n  function Formatter() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, Formatter);\n\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.formats = {\n      number: function number(val, lng, options) {\n        return new Intl.NumberFormat(lng, options).format(val);\n      },\n      currency: function currency(val, lng, options) {\n        return new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n          style: 'currency'\n        })).format(val);\n      },\n      datetime: function datetime(val, lng, options) {\n        return new Intl.DateTimeFormat(lng, _objectSpread$4({}, options)).format(val);\n      },\n      relativetime: function relativetime(val, lng, options) {\n        return new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options)).format(val, options.range || 'day');\n      },\n      list: function list(val, lng, options) {\n        return new Intl.ListFormat(lng, _objectSpread$4({}, options)).format(val);\n      }\n    };\n    this.init(options);\n  }\n\n  _createClass(Formatter, [{\n    key: \"init\",\n    value: function init(services) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        interpolation: {}\n      };\n      var iOpts = options.interpolation;\n      this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n    }\n  }, {\n    key: \"add\",\n    value: function add(name, fc) {\n      this.formats[name.toLowerCase().trim()] = fc;\n    }\n  }, {\n    key: \"format\",\n    value: function format(value, _format, lng, options) {\n      var _this = this;\n\n      var formats = _format.split(this.formatSeparator);\n\n      var result = formats.reduce(function (mem, f) {\n        var _parseFormatStr = parseFormatStr(f),\n            formatName = _parseFormatStr.formatName,\n            formatOptions = _parseFormatStr.formatOptions;\n\n        if (_this.formats[formatName]) {\n          var formatted = mem;\n\n          try {\n            var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n            var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n            formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n          } catch (error) {\n            _this.logger.warn(error);\n          }\n\n          return formatted;\n        } else {\n          _this.logger.warn(\"there was no format function for \".concat(formatName));\n        }\n\n        return mem;\n      }, value);\n      return result;\n    }\n  }]);\n\n  return Formatter;\n}();\n\nfunction ownKeys$5(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread$5(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys$5(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys$5(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _createSuper$2(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct$2();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _isNativeReflectConstruct$2() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction removePending(q, name) {\n  delete q.pending[name];\n  q.pendingCount--;\n}\n\nvar Connector = function (_EventEmitter) {\n  _inherits(Connector, _EventEmitter);\n\n  var _super = _createSuper$2(Connector);\n\n  function Connector(backend, store, services) {\n    var _this;\n\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    _classCallCheck(this, Connector);\n\n    _this = _super.call(this);\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.backend = backend;\n    _this.store = store;\n    _this.services = services;\n    _this.languageUtils = services.languageUtils;\n    _this.options = options;\n    _this.logger = baseLogger.create('backendConnector');\n    _this.waitingReads = [];\n    _this.maxParallelReads = options.maxParallelReads || 10;\n    _this.readingCalls = 0;\n    _this.state = {};\n    _this.queue = [];\n\n    if (_this.backend && _this.backend.init) {\n      _this.backend.init(services, options.backend, options);\n    }\n\n    return _this;\n  }\n\n  _createClass(Connector, [{\n    key: \"queueLoad\",\n    value: function queueLoad(languages, namespaces, options, callback) {\n      var _this2 = this;\n\n      var toLoad = {};\n      var pending = {};\n      var toLoadLanguages = {};\n      var toLoadNamespaces = {};\n      languages.forEach(function (lng) {\n        var hasAllNamespaces = true;\n        namespaces.forEach(function (ns) {\n          var name = \"\".concat(lng, \"|\").concat(ns);\n\n          if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n            _this2.state[name] = 2;\n          } else if (_this2.state[name] < 0) ;else if (_this2.state[name] === 1) {\n            if (pending[name] === undefined) pending[name] = true;\n          } else {\n            _this2.state[name] = 1;\n            hasAllNamespaces = false;\n            if (pending[name] === undefined) pending[name] = true;\n            if (toLoad[name] === undefined) toLoad[name] = true;\n            if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n          }\n        });\n        if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n      });\n\n      if (Object.keys(toLoad).length || Object.keys(pending).length) {\n        this.queue.push({\n          pending: pending,\n          pendingCount: Object.keys(pending).length,\n          loaded: {},\n          errors: [],\n          callback: callback\n        });\n      }\n\n      return {\n        toLoad: Object.keys(toLoad),\n        pending: Object.keys(pending),\n        toLoadLanguages: Object.keys(toLoadLanguages),\n        toLoadNamespaces: Object.keys(toLoadNamespaces)\n      };\n    }\n  }, {\n    key: \"loaded\",\n    value: function loaded(name, err, data) {\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      if (err) this.emit('failedLoading', lng, ns, err);\n\n      if (data) {\n        this.store.addResourceBundle(lng, ns, data);\n      }\n\n      this.state[name] = err ? -1 : 2;\n      var loaded = {};\n      this.queue.forEach(function (q) {\n        pushPath(q.loaded, [lng], ns);\n        removePending(q, name);\n        if (err) q.errors.push(err);\n\n        if (q.pendingCount === 0 && !q.done) {\n          Object.keys(q.loaded).forEach(function (l) {\n            if (!loaded[l]) loaded[l] = {};\n            var loadedKeys = Object.keys(loaded[l]);\n\n            if (loadedKeys.length) {\n              loadedKeys.forEach(function (ns) {\n                if (loadedKeys[ns] !== undefined) loaded[l][ns] = true;\n              });\n            }\n          });\n          q.done = true;\n\n          if (q.errors.length) {\n            q.callback(q.errors);\n          } else {\n            q.callback();\n          }\n        }\n      });\n      this.emit('loaded', loaded);\n      this.queue = this.queue.filter(function (q) {\n        return !q.done;\n      });\n    }\n  }, {\n    key: \"read\",\n    value: function read(lng, ns, fcName) {\n      var _this3 = this;\n\n      var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n      var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n      var callback = arguments.length > 5 ? arguments[5] : undefined;\n      if (!lng.length) return callback(null, {});\n\n      if (this.readingCalls >= this.maxParallelReads) {\n        this.waitingReads.push({\n          lng: lng,\n          ns: ns,\n          fcName: fcName,\n          tried: tried,\n          wait: wait,\n          callback: callback\n        });\n        return;\n      }\n\n      this.readingCalls++;\n      return this.backend[fcName](lng, ns, function (err, data) {\n        if (err && data && tried < 5) {\n          setTimeout(function () {\n            _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n          }, wait);\n          return;\n        }\n\n        _this3.readingCalls--;\n\n        if (_this3.waitingReads.length > 0) {\n          var next = _this3.waitingReads.shift();\n\n          _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n        }\n\n        callback(err, data);\n      });\n    }\n  }, {\n    key: \"prepareLoading\",\n    value: function prepareLoading(languages, namespaces) {\n      var _this4 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n      if (!this.backend) {\n        this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n        return callback && callback();\n      }\n\n      if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n      if (!toLoad.toLoad.length) {\n        if (!toLoad.pending.length) callback();\n        return null;\n      }\n\n      toLoad.toLoad.forEach(function (name) {\n        _this4.loadOne(name);\n      });\n    }\n  }, {\n    key: \"load\",\n    value: function load(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {}, callback);\n    }\n  }, {\n    key: \"reload\",\n    value: function reload(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {\n        reload: true\n      }, callback);\n    }\n  }, {\n    key: \"loadOne\",\n    value: function loadOne(name) {\n      var _this5 = this;\n\n      var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n        if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n        if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n        _this5.loaded(name, err, data);\n      });\n    }\n  }, {\n    key: \"saveMissing\",\n    value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n      if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n        this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        return;\n      }\n\n      if (key === undefined || key === null || key === '') return;\n\n      if (this.backend && this.backend.create) {\n        this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n          isUpdate: isUpdate\n        }));\n      }\n\n      if (!languages || !languages[0]) return;\n      this.store.addResource(languages[0], namespace, key, fallbackValue);\n    }\n  }]);\n\n  return Connector;\n}(EventEmitter);\n\nfunction get() {\n  return {\n    debug: false,\n    initImmediate: true,\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false,\n    supportedLngs: false,\n    nonExplicitSupportedLngs: false,\n    load: 'all',\n    preload: false,\n    simplifyPluralSuffix: true,\n    keySeparator: '.',\n    nsSeparator: ':',\n    pluralSeparator: '_',\n    contextSeparator: '_',\n    partialBundledLanguages: false,\n    saveMissing: false,\n    updateMissing: false,\n    saveMissingTo: 'fallback',\n    saveMissingPlurals: true,\n    missingKeyHandler: false,\n    missingInterpolationHandler: false,\n    postProcess: false,\n    postProcessPassResolved: false,\n    returnNull: true,\n    returnEmptyString: true,\n    returnObjects: false,\n    joinArrays: false,\n    returnedObjectHandler: false,\n    parseMissingKeyHandler: false,\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      var ret = {};\n      if (_typeof(args[1]) === 'object') ret = args[1];\n      if (typeof args[1] === 'string') ret.defaultValue = args[1];\n      if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n      if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n        var options = args[3] || args[2];\n        Object.keys(options).forEach(function (key) {\n          ret[key] = options[key];\n        });\n      }\n\n      return ret;\n    },\n    interpolation: {\n      escapeValue: true,\n      format: function format(value, _format, lng, options) {\n        return value;\n      },\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      unescapePrefix: '-',\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      nestingOptionsSeparator: ',',\n      maxReplaces: 1000,\n      skipOnVariables: true\n    }\n  };\n}\n\nfunction transformOptions(options) {\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n\n  return options;\n}\n\nfunction ownKeys$6(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread$6(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys$6(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys$6(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _createSuper$3(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct$3();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _isNativeReflectConstruct$3() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction noop() {}\n\nfunction bindMemberFunctions(inst) {\n  var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(function (mem) {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n}\n\nvar I18n = function (_EventEmitter) {\n  _inherits(I18n, _EventEmitter);\n\n  var _super = _createSuper$3(I18n);\n\n  function I18n() {\n    var _this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n    _classCallCheck(this, I18n);\n\n    _this = _super.call(this);\n\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n\n    _this.options = transformOptions(options);\n    _this.services = {};\n    _this.logger = baseLogger;\n    _this.modules = {\n      external: []\n    };\n    bindMemberFunctions(_assertThisInitialized(_this));\n\n    if (callback && !_this.isInitialized && !options.isClone) {\n      if (!_this.options.initImmediate) {\n        _this.init(options, callback);\n\n        return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n      }\n\n      setTimeout(function () {\n        _this.init(options, callback);\n      }, 0);\n    }\n\n    return _this;\n  }\n\n  _createClass(I18n, [{\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n\n      if (!options.defaultNS && options.ns) {\n        if (typeof options.ns === 'string') {\n          options.defaultNS = options.ns;\n        } else if (options.ns.indexOf('translation') < 0) {\n          options.defaultNS = options.ns[0];\n        }\n      }\n\n      var defOpts = get();\n      this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n\n      if (this.options.compatibilityAPI !== 'v1') {\n        this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n      }\n\n      if (options.keySeparator !== undefined) {\n        this.options.userDefinedKeySeparator = options.keySeparator;\n      }\n\n      if (options.nsSeparator !== undefined) {\n        this.options.userDefinedNsSeparator = options.nsSeparator;\n      }\n\n      function createClassOnDemand(ClassOrObject) {\n        if (!ClassOrObject) return null;\n        if (typeof ClassOrObject === 'function') return new ClassOrObject();\n        return ClassOrObject;\n      }\n\n      if (!this.options.isClone) {\n        if (this.modules.logger) {\n          baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n        } else {\n          baseLogger.init(null, this.options);\n        }\n\n        var formatter;\n\n        if (this.modules.formatter) {\n          formatter = this.modules.formatter;\n        } else if (typeof Intl !== 'undefined') {\n          formatter = Formatter;\n        }\n\n        var lu = new LanguageUtil(this.options);\n        this.store = new ResourceStore(this.options.resources, this.options);\n        var s = this.services;\n        s.logger = baseLogger;\n        s.resourceStore = this.store;\n        s.languageUtils = lu;\n        s.pluralResolver = new PluralResolver(lu, {\n          prepend: this.options.pluralSeparator,\n          compatibilityJSON: this.options.compatibilityJSON,\n          simplifyPluralSuffix: this.options.simplifyPluralSuffix\n        });\n\n        if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n          s.formatter = createClassOnDemand(formatter);\n          s.formatter.init(s, this.options);\n          this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n        }\n\n        s.interpolator = new Interpolator(this.options);\n        s.utils = {\n          hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n        };\n        s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n        s.backendConnector.on('*', function (event) {\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          _this2.emit.apply(_this2, [event].concat(args));\n        });\n\n        if (this.modules.languageDetector) {\n          s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n          s.languageDetector.init(s, this.options.detection, this.options);\n        }\n\n        if (this.modules.i18nFormat) {\n          s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n          if (s.i18nFormat.init) s.i18nFormat.init(this);\n        }\n\n        this.translator = new Translator(this.services, this.options);\n        this.translator.on('*', function (event) {\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\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n        this.modules.external.forEach(function (m) {\n          if (m.init) m.init(_this2);\n        });\n      }\n\n      this.format = this.options.interpolation.format;\n      if (!callback) callback = noop;\n\n      if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n        var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n      }\n\n      if (!this.services.languageDetector && !this.options.lng) {\n        this.logger.warn('init: no languageDetector is used and no lng is defined');\n      }\n\n      var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n      storeApi.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store;\n\n          return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n        };\n      });\n      var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n      storeApiChained.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store2;\n\n          (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n          return _this2;\n        };\n      });\n      var deferred = defer();\n\n      var load = function load() {\n        var finish = function finish(err, t) {\n          if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n          _this2.isInitialized = true;\n          if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n          _this2.emit('initialized', _this2.options);\n\n          deferred.resolve(t);\n          callback(err, t);\n        };\n\n        if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n        _this2.changeLanguage(_this2.options.lng, finish);\n      };\n\n      if (this.options.resources || !this.options.initImmediate) {\n        load();\n      } else {\n        setTimeout(load, 0);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"loadResources\",\n    value: function loadResources(language) {\n      var _this3 = this;\n\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n      var usedCallback = callback;\n      var usedLng = typeof language === 'string' ? language : this.language;\n      if (typeof language === 'function') usedCallback = language;\n\n      if (!this.options.resources || this.options.partialBundledLanguages) {\n        if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n        var toLoad = [];\n\n        var append = function append(lng) {\n          if (!lng) return;\n\n          var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n          lngs.forEach(function (l) {\n            if (toLoad.indexOf(l) < 0) toLoad.push(l);\n          });\n        };\n\n        if (!usedLng) {\n          var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n          fallbacks.forEach(function (l) {\n            return append(l);\n          });\n        } else {\n          append(usedLng);\n        }\n\n        if (this.options.preload) {\n          this.options.preload.forEach(function (l) {\n            return append(l);\n          });\n        }\n\n        this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n          if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n          usedCallback(e);\n        });\n      } else {\n        usedCallback(null);\n      }\n    }\n  }, {\n    key: \"reloadResources\",\n    value: function reloadResources(lngs, ns, callback) {\n      var deferred = defer();\n      if (!lngs) lngs = this.languages;\n      if (!ns) ns = this.options.ns;\n      if (!callback) callback = noop;\n      this.services.backendConnector.reload(lngs, ns, function (err) {\n        deferred.resolve();\n        callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"use\",\n    value: function use(module) {\n      if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n      if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n      if (module.type === 'backend') {\n        this.modules.backend = module;\n      }\n\n      if (module.type === 'logger' || module.log && module.warn && module.error) {\n        this.modules.logger = module;\n      }\n\n      if (module.type === 'languageDetector') {\n        this.modules.languageDetector = module;\n      }\n\n      if (module.type === 'i18nFormat') {\n        this.modules.i18nFormat = module;\n      }\n\n      if (module.type === 'postProcessor') {\n        postProcessor.addPostProcessor(module);\n      }\n\n      if (module.type === 'formatter') {\n        this.modules.formatter = module;\n      }\n\n      if (module.type === '3rdParty') {\n        this.modules.external.push(module);\n      }\n\n      return this;\n    }\n  }, {\n    key: \"setResolvedLanguage\",\n    value: function setResolvedLanguage(l) {\n      if (!l || !this.languages) return;\n      if (['cimode', 'dev'].indexOf(l) > -1) return;\n\n      for (var li = 0; li < this.languages.length; li++) {\n        var lngInLngs = this.languages[li];\n        if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n\n        if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n          this.resolvedLanguage = lngInLngs;\n          break;\n        }\n      }\n    }\n  }, {\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng, callback) {\n      var _this4 = this;\n\n      this.isLanguageChangingTo = lng;\n      var deferred = defer();\n      this.emit('languageChanging', lng);\n\n      var setLngProps = function setLngProps(l) {\n        _this4.language = l;\n        _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n        _this4.resolvedLanguage = undefined;\n\n        _this4.setResolvedLanguage(l);\n      };\n\n      var done = function done(err, l) {\n        if (l) {\n          setLngProps(l);\n\n          _this4.translator.changeLanguage(l);\n\n          _this4.isLanguageChangingTo = undefined;\n\n          _this4.emit('languageChanged', l);\n\n          _this4.logger.log('languageChanged', l);\n        } else {\n          _this4.isLanguageChangingTo = undefined;\n        }\n\n        deferred.resolve(function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n        if (callback) callback(err, function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n      };\n\n      var setLng = function setLng(lngs) {\n        if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n        var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n        if (l) {\n          if (!_this4.language) {\n            setLngProps(l);\n          }\n\n          if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n          if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n        }\n\n        _this4.loadResources(l, function (err) {\n          done(err, l);\n        });\n      };\n\n      if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n        setLng(this.services.languageDetector.detect());\n      } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n        this.services.languageDetector.detect(setLng);\n      } else {\n        setLng(lng);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"getFixedT\",\n    value: function getFixedT(lng, ns, keyPrefix) {\n      var _this5 = this;\n\n      var fixedT = function fixedT(key, opts) {\n        var options;\n\n        if (_typeof(opts) !== 'object') {\n          for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n            rest[_key3 - 2] = arguments[_key3];\n          }\n\n          options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n        } else {\n          options = _objectSpread$6({}, opts);\n        }\n\n        options.lng = options.lng || fixedT.lng;\n        options.lngs = options.lngs || fixedT.lngs;\n        options.ns = options.ns || fixedT.ns;\n        var keySeparator = _this5.options.keySeparator || '.';\n        var resultKey = keyPrefix ? \"\".concat(keyPrefix).concat(keySeparator).concat(key) : key;\n        return _this5.t(resultKey, options);\n      };\n\n      if (typeof lng === 'string') {\n        fixedT.lng = lng;\n      } else {\n        fixedT.lngs = lng;\n      }\n\n      fixedT.ns = ns;\n      fixedT.keyPrefix = keyPrefix;\n      return fixedT;\n    }\n  }, {\n    key: \"t\",\n    value: function t() {\n      var _this$translator;\n\n      return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n    }\n  }, {\n    key: \"exists\",\n    value: function exists() {\n      var _this$translator2;\n\n      return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n    }\n  }, {\n    key: \"setDefaultNamespace\",\n    value: function setDefaultNamespace(ns) {\n      this.options.defaultNS = ns;\n    }\n  }, {\n    key: \"hasLoadedNamespace\",\n    value: function hasLoadedNamespace(ns) {\n      var _this6 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (!this.isInitialized) {\n        this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n        return false;\n      }\n\n      if (!this.languages || !this.languages.length) {\n        this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n        return false;\n      }\n\n      var lng = this.resolvedLanguage || this.languages[0];\n      var fallbackLng = this.options ? this.options.fallbackLng : false;\n      var lastLng = this.languages[this.languages.length - 1];\n      if (lng.toLowerCase() === 'cimode') return true;\n\n      var loadNotPending = function loadNotPending(l, n) {\n        var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n        return loadState === -1 || loadState === 2;\n      };\n\n      if (options.precheck) {\n        var preResult = options.precheck(this, loadNotPending);\n        if (preResult !== undefined) return preResult;\n      }\n\n      if (this.hasResourceBundle(lng, ns)) return true;\n      if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n      if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n      return false;\n    }\n  }, {\n    key: \"loadNamespaces\",\n    value: function loadNamespaces(ns, callback) {\n      var _this7 = this;\n\n      var deferred = defer();\n\n      if (!this.options.ns) {\n        callback && callback();\n        return Promise.resolve();\n      }\n\n      if (typeof ns === 'string') ns = [ns];\n      ns.forEach(function (n) {\n        if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n      });\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"loadLanguages\",\n    value: function loadLanguages(lngs, callback) {\n      var deferred = defer();\n      if (typeof lngs === 'string') lngs = [lngs];\n      var preloaded = this.options.preload || [];\n      var newLngs = lngs.filter(function (lng) {\n        return preloaded.indexOf(lng) < 0;\n      });\n\n      if (!newLngs.length) {\n        if (callback) callback();\n        return Promise.resolve();\n      }\n\n      this.options.preload = preloaded.concat(newLngs);\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"dir\",\n    value: function dir(lng) {\n      if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n      if (!lng) return 'rtl';\n      var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n      return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n    }\n  }, {\n    key: \"cloneInstance\",\n    value: function cloneInstance() {\n      var _this8 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n      var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n        isClone: true\n      });\n\n      var clone = new I18n(mergedOptions);\n      var membersToCopy = ['store', 'services', 'language'];\n      membersToCopy.forEach(function (m) {\n        clone[m] = _this8[m];\n      });\n      clone.services = _objectSpread$6({}, this.services);\n      clone.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      clone.translator = new Translator(clone.services, clone.options);\n      clone.translator.on('*', function (event) {\n        for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n          args[_key4 - 1] = arguments[_key4];\n        }\n\n        clone.emit.apply(clone, [event].concat(args));\n      });\n      clone.init(mergedOptions, callback);\n      clone.translator.options = clone.options;\n      clone.translator.backendConnector.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      return clone;\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return {\n        options: this.options,\n        store: this.store,\n        language: this.language,\n        languages: this.languages,\n        resolvedLanguage: this.resolvedLanguage\n      };\n    }\n  }]);\n\n  return I18n;\n}(EventEmitter);\n\n_defineProperty(I18n, \"createInstance\", function () {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var callback = arguments.length > 1 ? arguments[1] : undefined;\n  return new I18n(options, callback);\n});\n\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n  return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n  // START: fast-deep-equal es6/index.js 3.1.1\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n    var length, i, keys;\n\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    } // START: Modifications:\n    // 1. Extra `has<Type> &&` 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\n\n    var it;\n\n    if (hasMap && a instanceof Map && b instanceof Map) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n\n      while (!(i = it.next()).done) {\n        if (!b.has(i.value[0])) return false;\n      }\n\n      it = a.entries();\n\n      while (!(i = it.next()).done) {\n        if (!equal(i.value[1], b.get(i.value[0]))) return false;\n      }\n\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\n      while (!(i = it.next()).done) {\n        if (!b.has(i.value[0])) return false;\n      }\n\n      return true;\n    } // END: Modifications\n\n\n    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (a[i] !== b[i]) return false;\n      }\n\n      return true;\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\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    // START: react-fast-compare\n    // custom handling for DOM elements\n\n\n    if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact\n\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        continue;\n      } // all other properties should be traversed as usual\n\n\n      if (!equal(a[keys[i]], b[keys[i]])) return false;\n    } // END: react-fast-compare\n    // START: fast-deep-equal\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\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    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n};","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n  BODY: \"bodyAttributes\",\n  HTML: \"htmlAttributes\",\n  TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n  BASE: \"base\",\n  BODY: \"body\",\n  HEAD: \"head\",\n  HTML: \"html\",\n  LINK: \"link\",\n  META: \"meta\",\n  NOSCRIPT: \"noscript\",\n  SCRIPT: \"script\",\n  STYLE: \"style\",\n  TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n  return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n  CHARSET: \"charset\",\n  CSS_TEXT: \"cssText\",\n  HREF: \"href\",\n  HTTPEQUIV: \"http-equiv\",\n  INNER_HTML: \"innerHTML\",\n  ITEM_PROP: \"itemprop\",\n  NAME: \"name\",\n  PROPERTY: \"property\",\n  REL: \"rel\",\n  SRC: \"src\",\n  TARGET: \"target\"\n};\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 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};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n  obj[REACT_TAG_MAP[key]] = key;\n  return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n  var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (encode === false) {\n    return String(str);\n  }\n\n  return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n  var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n  var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n  if (innermostTemplate && innermostTitle) {\n    // use function arg to avoid need to escape $ characters\n    return innermostTemplate.replace(/%s/g, function () {\n      return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n    });\n  }\n\n  var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n  return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n  return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[tagType] !== \"undefined\";\n  }).map(function (props) {\n    return props[tagType];\n  }).reduce(function (tagAttrs, current) {\n    return _extends({}, tagAttrs, current);\n  }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n  return propsList.filter(function (props) {\n    return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n  }).map(function (props) {\n    return props[TAG_NAMES.BASE];\n  }).reverse().reduce(function (innermostBaseTag, tag) {\n    if (!innermostBaseTag.length) {\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n          return innermostBaseTag.concat(tag);\n        }\n      }\n    }\n\n    return innermostBaseTag;\n  }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n  // Calculate list of tags, giving priority innermost component (end of the propslist)\n  var approvedSeenTags = {};\n  return propsList.filter(function (props) {\n    if (Array.isArray(props[tagName])) {\n      return true;\n    }\n\n    if (typeof props[tagName] !== \"undefined\") {\n      warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n    }\n\n    return false;\n  }).map(function (props) {\n    return props[tagName];\n  }).reverse().reduce(function (approvedTags, instanceTags) {\n    var instanceSeenTags = {};\n    instanceTags.filter(function (tag) {\n      var primaryAttributeKey = void 0;\n      var keys = Object.keys(tag);\n\n      for (var i = 0; i < keys.length; i++) {\n        var attributeKey = keys[i];\n        var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n        if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n          primaryAttributeKey = lowerCaseAttributeKey;\n        } // Special case for innerHTML which doesn't work lowercased\n\n\n        if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n          primaryAttributeKey = attributeKey;\n        }\n      }\n\n      if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n        return false;\n      }\n\n      var value = tag[primaryAttributeKey].toLowerCase();\n\n      if (!approvedSeenTags[primaryAttributeKey]) {\n        approvedSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!instanceSeenTags[primaryAttributeKey]) {\n        instanceSeenTags[primaryAttributeKey] = {};\n      }\n\n      if (!approvedSeenTags[primaryAttributeKey][value]) {\n        instanceSeenTags[primaryAttributeKey][value] = true;\n        return true;\n      }\n\n      return false;\n    }).reverse().forEach(function (tag) {\n      return approvedTags.push(tag);\n    }); // Update seen tags with tags from this instance\n\n    var keys = Object.keys(instanceSeenTags);\n\n    for (var i = 0; i < keys.length; i++) {\n      var attributeKey = keys[i];\n      var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n      approvedSeenTags[attributeKey] = tagUnion;\n    }\n\n    return approvedTags;\n  }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n  for (var i = propsList.length - 1; i >= 0; i--) {\n    var props = propsList[i];\n\n    if (props.hasOwnProperty(property)) {\n      return props[property];\n    }\n  }\n\n  return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n  return {\n    baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n    bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n    defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n    encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n    htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n    linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n    metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n    noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n    onChangeClientState: getOnChangeClientState(propsList),\n    scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n    styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n    title: getTitleFromPropsList(propsList),\n    titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n  };\n};\n\nvar rafPolyfill = function () {\n  var clock = Date.now();\n  return function (callback) {\n    var currentTime = Date.now();\n\n    if (currentTime - clock > 16) {\n      clock = currentTime;\n      callback(currentTime);\n    } else {\n      setTimeout(function () {\n        rafPolyfill(callback);\n      }, 0);\n    }\n  };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n  return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n  return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n  if (_helmetCallback) {\n    cancelAnimationFrame(_helmetCallback);\n  }\n\n  if (newState.defer) {\n    _helmetCallback = requestAnimationFrame(function () {\n      commitTagChanges(newState, function () {\n        _helmetCallback = null;\n      });\n    });\n  } else {\n    commitTagChanges(newState);\n    _helmetCallback = null;\n  }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n  var baseTag = newState.baseTag,\n      bodyAttributes = newState.bodyAttributes,\n      htmlAttributes = newState.htmlAttributes,\n      linkTags = newState.linkTags,\n      metaTags = newState.metaTags,\n      noscriptTags = newState.noscriptTags,\n      onChangeClientState = newState.onChangeClientState,\n      scriptTags = newState.scriptTags,\n      styleTags = newState.styleTags,\n      title = newState.title,\n      titleAttributes = newState.titleAttributes;\n  updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n  updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n  updateTitle(title, titleAttributes);\n  var tagUpdates = {\n    baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n    linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n    metaTags: updateTags(TAG_NAMES.META, metaTags),\n    noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n    scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n    styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n  };\n  var addedTags = {};\n  var removedTags = {};\n  Object.keys(tagUpdates).forEach(function (tagType) {\n    var _tagUpdates$tagType = tagUpdates[tagType],\n        newTags = _tagUpdates$tagType.newTags,\n        oldTags = _tagUpdates$tagType.oldTags;\n\n    if (newTags.length) {\n      addedTags[tagType] = newTags;\n    }\n\n    if (oldTags.length) {\n      removedTags[tagType] = tagUpdates[tagType].oldTags;\n    }\n  });\n  cb && cb();\n  onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n  return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n  if (typeof title !== \"undefined\" && document.title !== title) {\n    document.title = flattenArray(title);\n  }\n\n  updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n  var elementTag = document.getElementsByTagName(tagName)[0];\n\n  if (!elementTag) {\n    return;\n  }\n\n  var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n  var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n  var attributesToRemove = [].concat(helmetAttributes);\n  var attributeKeys = Object.keys(attributes);\n\n  for (var i = 0; i < attributeKeys.length; i++) {\n    var attribute = attributeKeys[i];\n    var value = attributes[attribute] || \"\";\n\n    if (elementTag.getAttribute(attribute) !== value) {\n      elementTag.setAttribute(attribute, value);\n    }\n\n    if (helmetAttributes.indexOf(attribute) === -1) {\n      helmetAttributes.push(attribute);\n    }\n\n    var indexToSave = attributesToRemove.indexOf(attribute);\n\n    if (indexToSave !== -1) {\n      attributesToRemove.splice(indexToSave, 1);\n    }\n  }\n\n  for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n    elementTag.removeAttribute(attributesToRemove[_i]);\n  }\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};\n\nvar updateTags = function updateTags(type, tags) {\n  var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n  var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n  var oldTags = Array.prototype.slice.call(tagNodes);\n  var newTags = [];\n  var indexToDelete = void 0;\n\n  if (tags && tags.length) {\n    tags.forEach(function (tag) {\n      var newElement = document.createElement(type);\n\n      for (var attribute in tag) {\n        if (tag.hasOwnProperty(attribute)) {\n          if (attribute === TAG_PROPERTIES.INNER_HTML) {\n            newElement.innerHTML = tag.innerHTML;\n          } else if (attribute === TAG_PROPERTIES.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            var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n            newElement.setAttribute(attribute, value);\n          }\n        }\n      }\n\n      newElement.setAttribute(HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n      if (oldTags.some(function (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\n  oldTags.forEach(function (tag) {\n    return tag.parentNode.removeChild(tag);\n  });\n  newTags.forEach(function (tag) {\n    return headElement.appendChild(tag);\n  });\n  return {\n    oldTags: oldTags,\n    newTags: newTags\n  };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n  return Object.keys(attributes).reduce(function (str, key) {\n    var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n    return str ? str + \" \" + attr : attr;\n  }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n  var attributeString = generateElementAttributesAsString(attributes);\n  var flattenedTitle = flattenArray(title);\n  return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n  return tags.reduce(function (str, tag) {\n    var attributeHtml = Object.keys(tag).filter(function (attribute) {\n      return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n    }).reduce(function (string, attribute) {\n      var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n      return string ? string + \" \" + attr : attr;\n    }, \"\");\n    var tagContent = tag.innerHTML || tag.cssText || \"\";\n    var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n    return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n  }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n  var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(attributes).reduce(function (obj, key) {\n    obj[REACT_TAG_MAP[key] || key] = attributes[key];\n    return obj;\n  }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n  var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Object.keys(props).reduce(function (obj, key) {\n    obj[HTML_TAG_MAP[key] || key] = props[key];\n    return obj;\n  }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n  var _initProps; // assigning into an array to define toString function on it\n\n\n  var initProps = (_initProps = {\n    key: title\n  }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n  var props = convertElementAttributestoReactProps(attributes, initProps);\n  return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n  return tags.map(function (tag, i) {\n    var _mappedTag;\n\n    var mappedTag = (_mappedTag = {\n      key: i\n    }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n    Object.keys(tag).forEach(function (attribute) {\n      var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n      if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n        var content = tag.innerHTML || tag.cssText;\n        mappedTag.dangerouslySetInnerHTML = {\n          __html: content\n        };\n      } else {\n        mappedTag[mappedAttribute] = tag[attribute];\n      }\n    });\n    return React.createElement(type, mappedTag);\n  });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n  switch (type) {\n    case TAG_NAMES.TITLE:\n      return {\n        toComponent: function toComponent() {\n          return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n        },\n        toString: function toString() {\n          return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n        }\n      };\n\n    case ATTRIBUTE_NAMES.BODY:\n    case ATTRIBUTE_NAMES.HTML:\n      return {\n        toComponent: function toComponent() {\n          return convertElementAttributestoReactProps(tags);\n        },\n        toString: function toString() {\n          return generateElementAttributesAsString(tags);\n        }\n      };\n\n    default:\n      return {\n        toComponent: function toComponent() {\n          return generateTagsAsReactComponent(type, tags);\n        },\n        toString: function toString() {\n          return generateTagsAsString(type, tags, encode);\n        }\n      };\n  }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n  var baseTag = _ref.baseTag,\n      bodyAttributes = _ref.bodyAttributes,\n      encode = _ref.encode,\n      htmlAttributes = _ref.htmlAttributes,\n      linkTags = _ref.linkTags,\n      metaTags = _ref.metaTags,\n      noscriptTags = _ref.noscriptTags,\n      scriptTags = _ref.scriptTags,\n      styleTags = _ref.styleTags,\n      _ref$title = _ref.title,\n      title = _ref$title === undefined ? \"\" : _ref$title,\n      titleAttributes = _ref.titleAttributes;\n  return {\n    base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n    bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n    htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n    link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n    meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n    noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n    script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n    style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n    title: getMethodsForTag(TAG_NAMES.TITLE, {\n      title: title,\n      titleAttributes: titleAttributes\n    }, encode)\n  };\n};\n\nvar Helmet = function Helmet(Component) {\n  var _class, _temp;\n\n  return _temp = _class = function (_React$Component) {\n    inherits(HelmetWrapper, _React$Component);\n\n    function HelmetWrapper() {\n      classCallCheck(this, HelmetWrapper);\n      return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n    }\n\n    HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n      return !isEqual(this.props, nextProps);\n    };\n\n    HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n      if (!nestedChildren) {\n        return null;\n      }\n\n      switch (child.type) {\n        case TAG_NAMES.SCRIPT:\n        case TAG_NAMES.NOSCRIPT:\n          return {\n            innerHTML: nestedChildren\n          };\n\n        case TAG_NAMES.STYLE:\n          return {\n            cssText: nestedChildren\n          };\n      }\n\n      throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n    };\n\n    HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n      var _babelHelpers$extends;\n\n      var child = _ref.child,\n          arrayTypeChildren = _ref.arrayTypeChildren,\n          newChildProps = _ref.newChildProps,\n          nestedChildren = _ref.nestedChildren;\n      return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n    };\n\n    HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n      var _babelHelpers$extends2, _babelHelpers$extends3;\n\n      var child = _ref2.child,\n          newProps = _ref2.newProps,\n          newChildProps = _ref2.newChildProps,\n          nestedChildren = _ref2.nestedChildren;\n\n      switch (child.type) {\n        case TAG_NAMES.TITLE:\n          return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n        case TAG_NAMES.BODY:\n          return _extends({}, newProps, {\n            bodyAttributes: _extends({}, newChildProps)\n          });\n\n        case TAG_NAMES.HTML:\n          return _extends({}, newProps, {\n            htmlAttributes: _extends({}, newChildProps)\n          });\n      }\n\n      return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n    };\n\n    HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n      var newFlattenedProps = _extends({}, newProps);\n\n      Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n        var _babelHelpers$extends4;\n\n        newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n      });\n      return newFlattenedProps;\n    };\n\n    HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!VALID_TAG_NAMES.some(function (name) {\n          return child.type === name;\n        })) {\n          if (typeof child.type === \"function\") {\n            return warn(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n          }\n\n          return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n        }\n\n        if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n          return typeof nestedChild !== \"string\";\n        }))) {\n          throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n        }\n      }\n\n      return true;\n    };\n\n    HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n      var _this2 = this;\n\n      var arrayTypeChildren = {};\n      React.Children.forEach(children, function (child) {\n        if (!child || !child.props) {\n          return;\n        }\n\n        var _child$props = child.props,\n            nestedChildren = _child$props.children,\n            childProps = objectWithoutProperties(_child$props, [\"children\"]);\n        var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n        _this2.warnOnInvalidChildren(child, nestedChildren);\n\n        switch (child.type) {\n          case TAG_NAMES.LINK:\n          case TAG_NAMES.META:\n          case TAG_NAMES.NOSCRIPT:\n          case TAG_NAMES.SCRIPT:\n          case TAG_NAMES.STYLE:\n            arrayTypeChildren = _this2.flattenArrayTypeChildren({\n              child: child,\n              arrayTypeChildren: arrayTypeChildren,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n\n          default:\n            newProps = _this2.mapObjectTypeChildren({\n              child: child,\n              newProps: newProps,\n              newChildProps: newChildProps,\n              nestedChildren: nestedChildren\n            });\n            break;\n        }\n      });\n      newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n      return newProps;\n    };\n\n    HelmetWrapper.prototype.render = function render() {\n      var _props = this.props,\n          children = _props.children,\n          props = objectWithoutProperties(_props, [\"children\"]);\n\n      var newProps = _extends({}, props);\n\n      if (children) {\n        newProps = this.mapChildrenToProps(children, newProps);\n      }\n\n      return React.createElement(Component, newProps);\n    };\n\n    createClass(HelmetWrapper, null, [{\n      key: \"canUseDOM\",\n      // Component.peek comes from react-side-effect:\n      // For testing, you may use a static peek() method available on the returned component.\n      // It lets you get the current state without resetting the mounted instance stack.\n      // Don’t use it for anything other than testing.\n\n      /**\n       * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n       * @param {Object} bodyAttributes: {\"className\": \"root\"}\n       * @param {String} defaultTitle: \"Default Title\"\n       * @param {Boolean} defer: true\n       * @param {Boolean} encodeSpecialCharacters: true\n       * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n       * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n       * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n       * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n       * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n       * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n       * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n       * @param {String} title: \"Title\"\n       * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n       * @param {String} titleTemplate: \"MySite.com - %s\"\n       */\n      set: function set$$1(canUseDOM) {\n        Component.canUseDOM = canUseDOM;\n      }\n    }]);\n    return HelmetWrapper;\n  }(React.Component), _class.propTypes = {\n    base: PropTypes.object,\n    bodyAttributes: PropTypes.object,\n    children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n    defaultTitle: PropTypes.string,\n    defer: PropTypes.bool,\n    encodeSpecialCharacters: PropTypes.bool,\n    htmlAttributes: PropTypes.object,\n    link: PropTypes.arrayOf(PropTypes.object),\n    meta: PropTypes.arrayOf(PropTypes.object),\n    noscript: PropTypes.arrayOf(PropTypes.object),\n    onChangeClientState: PropTypes.func,\n    script: PropTypes.arrayOf(PropTypes.object),\n    style: PropTypes.arrayOf(PropTypes.object),\n    title: PropTypes.string,\n    titleAttributes: PropTypes.object,\n    titleTemplate: PropTypes.string\n  }, _class.defaultProps = {\n    defer: true,\n    encodeSpecialCharacters: true\n  }, _class.peek = Component.peek, _class.rewind = function () {\n    var mappedState = Component.rewind();\n\n    if (!mappedState) {\n      // provide fallback if mappedState is undefined\n      mappedState = mapStateOnServer({\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    return mappedState;\n  }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n  return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nimport React from 'react';\nvar defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n  return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n  function ReportNamespaces() {\n    _classCallCheck(this, ReportNamespaces);\n\n    this.usedNamespaces = {};\n  }\n\n  _createClass(ReportNamespaces, [{\n    key: \"addUsedNamespaces\",\n    value: function addUsedNamespaces(namespaces) {\n      var _this = this;\n\n      namespaces.forEach(function (ns) {\n        if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n      });\n    }\n  }, {\n    key: \"getUsedNamespaces\",\n    value: function getUsedNamespaces() {\n      return Object.keys(this.usedNamespaces);\n    }\n  }]);\n\n  return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n  i18nInstance = instance;\n}\nexport function getI18n() {\n  return i18nInstance;\n}\nexport var initReactI18next = {\n  type: '3rdParty',\n  init: function init(instance) {\n    setDefaults(instance.options.react);\n    setI18n(instance);\n  }\n};\nexport function composeInitialProps(ForComponent) {\n  return function (ctx) {\n    return new Promise(function (resolve) {\n      var i18nInitialProps = getInitialProps();\n\n      if (ForComponent.getInitialProps) {\n        ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n          resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n        });\n      } else {\n        resolve(i18nInitialProps);\n      }\n    });\n  };\n}\nexport function getInitialProps() {\n  var i18n = getI18n();\n  var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n  var ret = {};\n  var initialI18nStore = {};\n  i18n.languages.forEach(function (l) {\n    initialI18nStore[l] = {};\n    namespaces.forEach(function (ns) {\n      initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n    });\n  });\n  ret.initialI18nStore = initialI18nStore;\n  ret.initialLanguage = i18n.language;\n  return ret;\n}","export function warn() {\n  if (console && console.warn) {\n    var _console;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n    (_console = console).warn.apply(_console, args);\n  }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n  if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n  warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n  i18n.loadNamespaces(ns, function () {\n    if (i18n.isInitialized) {\n      cb();\n    } else {\n      var initialized = function initialized() {\n        setTimeout(function () {\n          i18n.off('initialized', initialized);\n        }, 0);\n        cb();\n      };\n\n      i18n.on('initialized', initialized);\n    }\n  });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var lng = i18n.languages[0];\n  var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n  var lastLng = i18n.languages[i18n.languages.length - 1];\n  if (lng.toLowerCase() === 'cimode') return true;\n\n  var loadNotPending = function loadNotPending(l, n) {\n    var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n    return loadState === -1 || loadState === 2;\n  };\n\n  if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n  if (i18n.hasResourceBundle(lng, ns)) return true;\n  if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n  if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n  return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (!i18n.languages || !i18n.languages.length) {\n    warnOnce('i18n.languages were undefined or empty', i18n.languages);\n    return true;\n  }\n\n  var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n  if (!isNewerI18next) {\n    return oldI18nextHasLoadedNamespace(ns, i18n, options);\n  }\n\n  return i18n.hasLoadedNamespace(ns, {\n    precheck: function precheck(i18nInstance, loadNotPending) {\n      if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n    }\n  });\n}\nexport function getDisplayName(Component) {\n  return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\nexport function useTranslation(ns) {\n  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var i18nFromProps = props.i18n;\n\n  var _ref = useContext(I18nContext) || {},\n      i18nFromContext = _ref.i18n,\n      defaultNSFromContext = _ref.defaultNS;\n\n  var i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n    var notReadyT = function notReadyT(k) {\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n\n    var retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n\n  if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n  var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n  var useSuspense = i18nOptions.useSuspense,\n      keyPrefix = i18nOptions.keyPrefix;\n  var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n  var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n    return hasLoadedNamespace(n, i18n, i18nOptions);\n  });\n\n  function getT() {\n    return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  }\n\n  var _useState = useState(getT),\n      _useState2 = _slicedToArray(_useState, 2),\n      t = _useState2[0],\n      setT = _useState2[1];\n\n  var isMounted = useRef(true);\n  useEffect(function () {\n    var bindI18n = i18nOptions.bindI18n,\n        bindI18nStore = i18nOptions.bindI18nStore;\n    isMounted.current = true;\n\n    if (!ready && !useSuspense) {\n      loadNamespaces(i18n, namespaces, function () {\n        if (isMounted.current) setT(getT);\n      });\n    }\n\n    function boundReset() {\n      if (isMounted.current) setT(getT);\n    }\n\n    if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n    if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n    return function () {\n      isMounted.current = false;\n      if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n        return i18n.off(e, boundReset);\n      });\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n        return i18n.store.off(e, boundReset);\n      });\n    };\n  }, [i18n, namespaces.join()]);\n  var isInitial = useRef(true);\n  useEffect(function () {\n    if (isMounted.current && !isInitial.current) {\n      setT(getT);\n    }\n\n    isInitial.current = false;\n  }, [i18n]);\n  var ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(function (resolve) {\n    loadNamespaces(i18n, namespaces, function () {\n      resolve();\n    });\n  });\n}","/** @license React v16.13.1\n * react-is.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'use strict';\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n    c = b ? Symbol.for(\"react.element\") : 60103,\n    d = b ? Symbol.for(\"react.portal\") : 60106,\n    e = b ? Symbol.for(\"react.fragment\") : 60107,\n    f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n    g = b ? Symbol.for(\"react.profiler\") : 60114,\n    h = b ? Symbol.for(\"react.provider\") : 60109,\n    k = b ? Symbol.for(\"react.context\") : 60110,\n    l = b ? Symbol.for(\"react.async_mode\") : 60111,\n    m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n    n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n    p = b ? Symbol.for(\"react.suspense\") : 60113,\n    q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n    r = b ? Symbol.for(\"react.memo\") : 60115,\n    t = b ? Symbol.for(\"react.lazy\") : 60116,\n    v = b ? Symbol.for(\"react.block\") : 60121,\n    w = b ? Symbol.for(\"react.fundamental\") : 60117,\n    x = b ? Symbol.for(\"react.responder\") : 60118,\n    y = b ? Symbol.for(\"react.scope\") : 60119;\n\nfunction z(a) {\n  if (\"object\" === typeof a && null !== a) {\n    var u = a.$$typeof;\n\n    switch (u) {\n      case c:\n        switch (a = a.type, a) {\n          case l:\n          case m:\n          case e:\n          case g:\n          case f:\n          case p:\n            return a;\n\n          default:\n            switch (a = a && a.$$typeof, a) {\n              case k:\n              case n:\n              case t:\n              case r:\n              case h:\n                return a;\n\n              default:\n                return u;\n            }\n\n        }\n\n      case d:\n        return u;\n    }\n  }\n}\n\nfunction A(a) {\n  return z(a) === m;\n}\n\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isAsyncMode = function (a) {\n  return A(a) || z(a) === l;\n};\n\nexports.isConcurrentMode = A;\n\nexports.isContextConsumer = function (a) {\n  return z(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n  return z(a) === h;\n};\n\nexports.isElement = function (a) {\n  return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n  return z(a) === n;\n};\n\nexports.isFragment = function (a) {\n  return z(a) === e;\n};\n\nexports.isLazy = function (a) {\n  return z(a) === t;\n};\n\nexports.isMemo = function (a) {\n  return z(a) === r;\n};\n\nexports.isPortal = function (a) {\n  return z(a) === d;\n};\n\nexports.isProfiler = function (a) {\n  return z(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n  return z(a) === f;\n};\n\nexports.isSuspense = function (a) {\n  return z(a) === p;\n};\n\nexports.isValidElementType = function (a) {\n  return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n};\n\nexports.typeOf = z;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}","'use strict';\n\nfunction _interopDefault(ex) {\n  return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\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 _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n  if (typeof reducePropsToState !== 'function') {\n    throw new Error('Expected reducePropsToState to be a function.');\n  }\n\n  if (typeof handleStateChangeOnClient !== 'function') {\n    throw new Error('Expected handleStateChangeOnClient to be a function.');\n  }\n\n  if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n    throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (typeof WrappedComponent !== 'function') {\n      throw new Error('Expected WrappedComponent to be a React component.');\n    }\n\n    var mountedInstances = [];\n    var state;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n\n      if (SideEffect.canUseDOM) {\n        handleStateChangeOnClient(state);\n      } else if (mapStateOnServer) {\n        state = mapStateOnServer(state);\n      }\n    }\n\n    var SideEffect = /*#__PURE__*/function (_PureComponent) {\n      _inheritsLoose(SideEffect, _PureComponent);\n\n      function SideEffect() {\n        return _PureComponent.apply(this, arguments) || this;\n      } // Try to use displayName of wrapped component\n      // Expose canUseDOM so tests can monkeypatch it\n\n\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      SideEffect.rewind = function rewind() {\n        if (SideEffect.canUseDOM) {\n          throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n        }\n\n        var recordedState = state;\n        state = undefined;\n        mountedInstances = [];\n        return recordedState;\n      };\n\n      var _proto = SideEffect.prototype;\n\n      _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      _proto.render = function render() {\n        return /*#__PURE__*/React__default.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(React.PureComponent);\n\n    _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n    _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n    return SideEffect;\n  };\n}\n\nmodule.exports = withSideEffect;","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n  options.name        - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\n\nvar TypeError = global.TypeError;\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? bind(mapper, thisArg) : false;\n  var element, elementLen;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      if (depth > 0 && isArray(element)) {\n        elementLen = lengthOfArrayLike(element);\n        targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n      } else {\n        if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n  return fn && uncurryThis(fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var name = options && options.name !== undefined ? options.name : key;\n  var state;\n  if (isCallable(value)) {\n    if (String(name).slice(0, 7) === 'Symbol(') {\n      name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n    }\n    if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n      createNonEnumerableProperty(value, 'name', name);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n    }\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.21.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.21.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n  flatMap: function flatMap(callbackfn /* , thisArg */) {\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A;\n    aCallable(callbackfn);\n    A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return A;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n  flat: function flat(/* depthArg = 1 */) {\n    var depthArg = arguments.length ? arguments[0] : undefined;\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n    return A;\n  }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n  globalThis: global\n});\n","// TODO: Remove from `core-js@4`\nrequire('../modules/es.global-this');\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\n\nvar _isLocalLink = require(\"./is-local-link\");\n\nvar _rewriteLinkPath = require(\"./rewrite-link-path\");\n\nvar _excluded = [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"];\n\nfunction withPrefix(path, prefix) {\n  var _ref, _prefix;\n\n  if (prefix === void 0) {\n    prefix = getGlobalBasePrefix();\n  }\n\n  if (!(0, _isLocalLink.isLocalLink)(path)) {\n    return path;\n  }\n\n  if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n    return path;\n  }\n\n  var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n  return \"\" + (base !== null && base !== void 0 && base.endsWith(\"/\") ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n  return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n  return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nfunction withAssetPrefix(path) {\n  return withPrefix(path, getGlobalPathPrefix());\n}\n\nvar NavLinkPropTypes = {\n  activeClassName: _propTypes.default.string,\n  activeStyle: _propTypes.default.object,\n  partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n  var io = new window.IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      if (el === entry.target) {\n        // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n        // MSEdge doesn't currently support isIntersecting, so also test for  an intersectionRatio > 0\n        cb(entry.isIntersecting || entry.intersectionRatio > 0);\n      }\n    });\n  }); // Add element to the observer\n\n  io.observe(el);\n  return {\n    instance: io,\n    el: el\n  };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n  return /*#__PURE__*/_react.default.createElement(_reachRouter.Location, null, function (_ref2) {\n    var location = _ref2.location;\n    return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n      _location: location\n    }));\n  });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n  (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n  function GatsbyLink(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n    _this.defaultGetProps = function (_ref3) {\n      var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n          isCurrent = _ref3.isCurrent;\n\n      if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n        return {\n          className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n          style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n        };\n      }\n\n      return null;\n    };\n\n    var IOSupported = false;\n\n    if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n      IOSupported = true;\n    }\n\n    _this.state = {\n      IOSupported: IOSupported\n    };\n    _this.abortPrefetch = null;\n    _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n    return _this;\n  }\n\n  var _proto = GatsbyLink.prototype;\n\n  _proto._prefetch = function _prefetch() {\n    var currentPath = window.location.pathname + window.location.search; // reach router should have the correct state\n\n    if (this.props._location && this.props._location.pathname) {\n      currentPath = this.props._location.pathname + this.props._location.search;\n    }\n\n    var rewrittenPath = (0, _rewriteLinkPath.rewriteLinkPath)(this.props.to, currentPath);\n    var parsed = (0, _parsePath.parsePath)(rewrittenPath);\n    var newPathName = parsed.pathname + parsed.search; // Prefetch is used to speed up next navigations. When you use it on the current navigation,\n    // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n    if (currentPath !== newPathName) {\n      return ___loader.enqueue(newPathName);\n    }\n\n    return undefined;\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (!this.io) {\n      return;\n    }\n\n    var _this$io = this.io,\n        instance = _this$io.instance,\n        el = _this$io.el;\n\n    if (this.abortPrefetch) {\n      this.abortPrefetch.abort();\n    }\n\n    instance.unobserve(el);\n    instance.disconnect();\n  };\n\n  _proto.handleRef = function handleRef(ref) {\n    var _this2 = this;\n\n    if (this.props.innerRef && Object.prototype.hasOwnProperty.call(this.props.innerRef, \"current\")) {\n      this.props.innerRef.current = ref;\n    } else if (this.props.innerRef) {\n      this.props.innerRef(ref);\n    }\n\n    if (this.state.IOSupported && ref) {\n      // If IO supported and element reference found, setup Observer functionality\n      this.io = createIntersectionObserver(ref, function (inViewPort) {\n        if (inViewPort) {\n          _this2.abortPrefetch = _this2._prefetch();\n        } else {\n          if (_this2.abortPrefetch) {\n            _this2.abortPrefetch.abort();\n          }\n        }\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this3 = this;\n\n    var _this$props = this.props,\n        to = _this$props.to,\n        _this$props$getProps = _this$props.getProps,\n        getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n        _onClick = _this$props.onClick,\n        _onMouseEnter = _this$props.onMouseEnter,\n        $activeClassName = _this$props.activeClassName,\n        $activeStyle = _this$props.activeStyle,\n        $innerRef = _this$props.innerRef,\n        partiallyActive = _this$props.partiallyActive,\n        state = _this$props.state,\n        replace = _this$props.replace,\n        _location = _this$props._location,\n        rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);\n\n    if (process.env.NODE_ENV !== \"production\" && !(0, _isLocalLink.isLocalLink)(to)) {\n      console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n    }\n\n    var prefixedTo = (0, _rewriteLinkPath.rewriteLinkPath)(to, _location.pathname);\n\n    if (!(0, _isLocalLink.isLocalLink)(prefixedTo)) {\n      return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n        href: prefixedTo\n      }, rest));\n    }\n\n    return /*#__PURE__*/_react.default.createElement(_reachRouter.Link, (0, _extends2.default)({\n      to: prefixedTo,\n      state: state,\n      getProps: getProps,\n      innerRef: this.handleRef,\n      onMouseEnter: function onMouseEnter(e) {\n        if (_onMouseEnter) {\n          _onMouseEnter(e);\n        }\n\n        var parsed = (0, _parsePath.parsePath)(prefixedTo);\n\n        ___loader.hovering(parsed.pathname + parsed.search);\n      },\n      onClick: function onClick(e) {\n        if (_onClick) {\n          _onClick(e);\n        }\n\n        if (e.button === 0 && // ignore right clicks\n        !_this3.props.target && // let browser handle \"target=_blank\"\n        !e.defaultPrevented && // onClick prevented default\n        !e.metaKey && // ignore clicks with modifier keys...\n        !e.altKey && !e.ctrlKey && !e.shiftKey) {\n          e.preventDefault();\n          var shouldReplace = replace;\n\n          var isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n          if (typeof replace !== \"boolean\" && isCurrent) {\n            shouldReplace = true;\n          } // Make sure the necessary scripts and data are\n          // loaded before continuing.\n\n\n          window.___navigate(prefixedTo, {\n            state: state,\n            replace: shouldReplace\n          });\n        }\n\n        return true;\n      }\n    }, rest));\n  };\n\n  return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n  onClick: _propTypes.default.func,\n  to: _propTypes.default.string.isRequired,\n  replace: _propTypes.default.bool,\n  state: _propTypes.default.object\n});\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n  return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n    innerRef: ref\n  }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n  window.___navigate((0, _rewriteLinkPath.rewriteLinkPath)(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;","\"use strict\";\n\nexports.__esModule = true;\nexports.isLocalLink = void 0;\n// Copied from https://github.com/sindresorhus/is-absolute-url/blob/3ab19cc2e599a03ea691bcb8a4c09fa3ebb5da4f/index.js\nvar ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\n\nvar isAbsolute = function isAbsolute(path) {\n  return ABSOLUTE_URL_REGEX.test(path);\n};\n\nvar isLocalLink = function isLocalLink(path) {\n  if (typeof path !== \"string\") {\n    return undefined; // TODO(v5): Re-Add TypeError\n    // throw new TypeError(`Expected a \\`string\\`, got \\`${typeof path}\\``)\n  }\n\n  return !isAbsolute(path);\n};\n\nexports.isLocalLink = isLocalLink;","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n  var pathname = path || \"/\";\n  var search = \"\";\n  var hash = \"\";\n  var hashIndex = pathname.indexOf(\"#\");\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf(\"?\");\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === \"?\" ? \"\" : search,\n    hash: hash === \"#\" ? \"\" : hash\n  };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.rewriteLinkPath = void 0;\n\nvar _utils = require(\"@gatsbyjs/reach-router/lib/utils\");\n\nvar _applyTrailingSlashOption = require(\"gatsby-page-utils/apply-trailing-slash-option\");\n\nvar _parsePath2 = require(\"./parse-path\");\n\nvar _isLocalLink = require(\"./is-local-link\");\n\nvar _ = require(\".\");\n\n// Specific import to treeshake Node.js stuff\nvar isAbsolutePath = function isAbsolutePath(path) {\n  return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nvar getGlobalTrailingSlash = function getGlobalTrailingSlash() {\n  return typeof __TRAILING_SLASH__ !== \"undefined\" ? __TRAILING_SLASH__ : undefined;\n};\n\nfunction absolutify(path, current) {\n  // If it's already absolute, return as-is\n  if (isAbsolutePath(path)) {\n    return path;\n  }\n\n  return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n  if (typeof path === \"number\") {\n    return path;\n  }\n\n  if (!(0, _isLocalLink.isLocalLink)(path)) {\n    return path;\n  }\n\n  var _parsePath = (0, _parsePath2.parsePath)(path),\n      pathname = _parsePath.pathname,\n      search = _parsePath.search,\n      hash = _parsePath.hash;\n\n  var option = getGlobalTrailingSlash();\n  var adjustedPath = path;\n\n  if (option === \"always\" || option === \"never\") {\n    var output = (0, _applyTrailingSlashOption.applyTrailingSlashOption)(pathname, option);\n    adjustedPath = \"\" + output + search + hash;\n  }\n\n  return isAbsolutePath(adjustedPath) ? (0, _.withPrefix)(adjustedPath) : absolutify(adjustedPath, relativeTo);\n};\n\nexports.rewriteLinkPath = rewriteLinkPath;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n  (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n  function ScrollHandler() {\n    var _this;\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 = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this._stateStorage = new _sessionStorage.SessionStorage();\n    _this._isTicking = false;\n    _this._latestKnownScrollY = 0;\n\n    _this.scrollListener = function () {\n      _this._latestKnownScrollY = window.scrollY;\n\n      if (!_this._isTicking) {\n        _this._isTicking = true;\n        requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n      }\n    };\n\n    _this.windowScroll = function (position, prevProps) {\n      if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n        window.scrollTo(0, position);\n      }\n    };\n\n    _this.scrollToHash = function (hash, prevProps) {\n      var node = document.getElementById(hash.substring(1));\n\n      if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n        node.scrollIntoView();\n      }\n    };\n\n    _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n      var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n      if (!shouldUpdateScroll) {\n        return true;\n      } // Hack to allow accessing this._stateStorage.\n\n\n      return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n    };\n\n    return _this;\n  }\n\n  var _proto = ScrollHandler.prototype;\n\n  _proto._saveScroll = function _saveScroll() {\n    var key = this.props.location.key || null;\n\n    if (key) {\n      this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n    }\n\n    this._isTicking = false;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    window.addEventListener(\"scroll\", this.scrollListener);\n    var scrollPosition;\n    var _this$props$location = this.props.location,\n        key = _this$props$location.key,\n        hash = _this$props$location.hash;\n\n    if (key) {\n      scrollPosition = this._stateStorage.read(this.props.location, key);\n    }\n\n    if (scrollPosition) {\n      this.windowScroll(scrollPosition, undefined);\n    } else if (hash) {\n      this.scrollToHash(decodeURI(hash), undefined);\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    window.removeEventListener(\"scroll\", this.scrollListener);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var _this$props$location2 = this.props.location,\n        hash = _this$props$location2.hash,\n        key = _this$props$location2.key;\n    var scrollPosition;\n\n    if (key) {\n      scrollPosition = this._stateStorage.read(this.props.location, key);\n    }\n    /**  There are two pieces of state: the browser url and\n     * history state which keeps track of scroll position\n     * Native behaviour prescribes that we ought to restore scroll position\n     * when a user navigates back in their browser (this is the `POP` action)\n     * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n     * So we _always_ stick to the url as a source of truth — if the url\n     * contains a hash, we scroll to it\n     */\n\n\n    if (hash) {\n      this.scrollToHash(decodeURI(hash), prevProps);\n    } else {\n      this.windowScroll(scrollPosition, prevProps);\n    }\n  };\n\n  _proto.render = function render() {\n    return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n      value: this._stateStorage\n    }, this.props.children);\n  };\n\n  return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n  shouldUpdateScroll: _propTypes.default.func,\n  children: _propTypes.default.element.isRequired,\n  location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n  function SessionStorage() {}\n\n  var _proto = SessionStorage.prototype;\n\n  _proto.read = function read(location, key) {\n    var stateKey = this.getStateKey(location, key);\n\n    try {\n      var value = window.sessionStorage.getItem(stateKey);\n      return value ? JSON.parse(value) : 0;\n    } catch (e) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n      }\n\n      if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n        return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n      }\n\n      return 0;\n    }\n  };\n\n  _proto.save = function save(location, key, value) {\n    var stateKey = this.getStateKey(location, key);\n    var storedValue = JSON.stringify(value);\n\n    try {\n      window.sessionStorage.setItem(stateKey, storedValue);\n    } catch (e) {\n      if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n        window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n      } else {\n        window[GATSBY_ROUTER_SCROLL_STATE] = {};\n        window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n      }\n\n      if (process.env.NODE_ENV !== \"production\") {\n        console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n      }\n    }\n  };\n\n  _proto.getStateKey = function getStateKey(location, key) {\n    var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n    return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n  };\n\n  return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n  var location = (0, _reachRouter.useLocation)();\n  var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n  var ref = (0, _react.useRef)(null);\n  (0, _react.useLayoutEffect)(function () {\n    if (ref.current) {\n      var position = state.read(location, identifier);\n      ref.current.scrollTo(0, position || 0);\n    }\n  }, [location.key]);\n  return {\n    ref: ref,\n    onScroll: function onScroll() {\n      if (ref.current) {\n        state.save(location, identifier, ref.current.scrollTop);\n      }\n    }\n  };\n}","exports.components = {\n  \"component---src-pages-404-tsx\": () => import(\"./../../../src/pages/404.tsx\" /* webpackChunkName: \"component---src-pages-404-tsx\" */),\n  \"component---src-pages-index-tsx\": () => import(\"./../../../src/pages/index.tsx\" /* webpackChunkName: \"component---src-pages-index-tsx\" */),\n  \"component---src-pages-strapi-category-locale-strapi-category-slug-tsx\": () => import(\"./../../../src/pages/{StrapiCategory.locale}/{StrapiCategory.slug}.tsx\" /* webpackChunkName: \"component---src-pages-strapi-category-locale-strapi-category-slug-tsx\" */),\n  \"component---src-pages-strapi-job-offer-locale-strapi-job-offer-title-tsx\": () => import(\"./../../../src/pages/{StrapiJobOffer.locale}/{StrapiJobOffer.title}.tsx\" /* webpackChunkName: \"component---src-pages-strapi-job-offer-locale-strapi-job-offer-title-tsx\" */),\n  \"component---src-pages-strapi-page-locale-strapi-page-slug-tsx\": () => import(\"./../../../src/pages/{StrapiPage.locale}/{StrapiPage.slug}.tsx\" /* webpackChunkName: \"component---src-pages-strapi-page-locale-strapi-page-slug-tsx\" */)\n}\n\n","module.exports = [{\n      plugin: require('../node_modules/gatsby-plugin-loadable-components-ssr/gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    },{\n      plugin: require('../node_modules/gatsby-plugin-image/gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    },{\n      plugin: require('../node_modules/gatsby-plugin-mdx/gatsby-browser.js'),\n      options: {\"plugins\":[],\"gatsbyRemarkPlugins\":[{\"resolve\":\"/codebuild/output/src3414018106/src/sp-website/node_modules/gatsby-remark-line-breaks\",\"id\":\"0eb1f9e6-007a-573e-bd13-72471f920652\",\"name\":\"gatsby-remark-line-breaks\",\"version\":\"1.0.0\",\"modulePath\":\"/codebuild/output/src3414018106/src/sp-website/node_modules/gatsby-remark-line-breaks/dist/index.js\",\"module\":{},\"pluginOptions\":{\"plugins\":[],\"maxWidth\":590},\"nodeAPIs\":[],\"browserAPIs\":[],\"ssrAPIs\":[]}],\"extensions\":[\".mdx\"],\"defaultLayouts\":{},\"lessBabel\":false,\"remarkPlugins\":[],\"rehypePlugins\":[],\"mediaTypes\":[\"text/markdown\",\"text/x-markdown\"],\"root\":\"/codebuild/output/src3414018106/src/sp-website\",\"commonmark\":false},\n    },{\n      plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n      options: {\"plugins\":[],\"lang\":\"en\",\"name\":\"Signature Products GmbH\",\"short_name\":\"Signature Products\",\"description\":\"Signature Products is the hemp wholesaler for Europe. From hemp raw material to finished hemp products. Production, trade and consulting.\",\"start_url\":\"/en/\",\"background_color\":\"#000000\",\"theme_color\":\"#ffffff\",\"display\":\"standalone\",\"icon\":\"src/images/icon.svg\",\"crossOrigin\":\"use-credentials\",\"localize\":[{\"start_url\":\"/de/\",\"lang\":\"de\",\"name\":\"Signature Products GmbH (Deutschland)\",\"short_name\":\"Signature Products (DE)\",\"description\":\"Signature Products ist der Hanfgroßhandel Europas. Von Hanf-Rohmaterial bis hin zu fertigen Hanf-Produkten. Produktion, Handel und Beratung.\"},{\"start_url\":\"/es/\",\"lang\":\"es\",\"name\":\"Signature Products GmbH (Español)\",\"short_name\":\"Signature Products (ES)\",\"description\":\"Signature Products es el mayorista de cáñamo de Europa. Desde la materia prima del cáñamo hasta los productos acabados del mismo. Producción, comercio y consultoría.\"}],\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"include_favicon\":true,\"cacheDigest\":\"b2aeac9ed5c4873d8a903597c6e85755\"},\n    },{\n      plugin: require('../gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n  require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n  // Hooks for gatsby-cypress's API handler\n  if (process.env.CYPRESS_SUPPORT) {\n    if (window.___apiHandler) {\n      window.___apiHandler(api)\n    } else if (window.___resolvedAPIs) {\n      window.___resolvedAPIs.push(api)\n    } else {\n      window.___resolvedAPIs = [api]\n    }\n  }\n\n  let results = plugins.map(plugin => {\n    if (!plugin.plugin[api]) {\n      return undefined\n    }\n\n    args.getResourceURLsForPathname = getResourceURLsForPathname\n    args.loadPage = loadPage\n    args.loadPageSync = loadPageSync\n\n    const result = plugin.plugin[api](args, plugin.options)\n    if (result && argTransform) {\n      args = argTransform({ args, result, plugin })\n    }\n    return result\n  })\n\n  // Filter out undefined results.\n  results = results.filter(result => typeof result !== `undefined`)\n\n  if (results.length > 0) {\n    return results\n  } else if (defaultReturn) {\n    return [defaultReturn]\n  } else {\n    return []\n  }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n  plugins.reduce(\n    (previous, next) =>\n      next.plugin[api]\n        ? previous.then(() => next.plugin[api](args, next.options))\n        : previous,\n    Promise.resolve()\n  )\n","//      \n// An event handler can take an optional event argument\n// and should not return a value\n                                          \n                                                               \n\n// An array of all currently registered event handlers for a type\n                                            \n                                                            \n// A map of event types and their corresponding event handlers.\n                        \n                                 \n                                   \n  \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n *  @name mitt\n *  @returns {Mitt}\n */\nfunction mitt(all                 ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param  {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param  {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type        , handler              ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param  {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param  {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type        , handler              ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type  The event type to invoke\n\t\t * @param {Any} [evt]  Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type        , evt     ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","export default pathAndSearch => {\n  if (pathAndSearch === undefined) {\n    return pathAndSearch\n  }\n  let [path, search = ``] = pathAndSearch.split(`?`)\n  if (search) {\n    search = `?` + search\n  }\n\n  if (path === `/`) {\n    return `/` + search\n  }\n  if (path.charAt(path.length - 1) === `/`) {\n    return path.slice(0, -1) + search\n  }\n  return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n  const pathname = decodeURIComponent(rawPathname)\n  // Remove the pathPrefix from the pathname.\n  const trimmedPathname = stripPrefix(\n    pathname,\n    decodeURIComponent(__BASE_PATH__)\n  )\n    // Remove any hashfragment\n    .split(`#`)[0]\n\n  return trimmedPathname\n}\n\nfunction absolutify(path) {\n  // If it's already absolute, return as-is\n  if (\n    path.startsWith(`/`) ||\n    path.startsWith(`https://`) ||\n    path.startsWith(`http://`)\n  ) {\n    return path\n  }\n  // Calculate path relative to current location, adding a trailing slash to\n  // match behavior of @reach/router\n  return new URL(\n    path,\n    window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n  ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n  matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n  const trimmedPathname = cleanPath(rawPathname)\n\n  const pickPaths = matchPaths.map(({ path, matchPath }) => {\n    return {\n      path: matchPath,\n      originalPath: path,\n    }\n  })\n\n  const path = pick(pickPaths, trimmedPathname)\n\n  if (path) {\n    return normalizePagePath(path.route.originalPath)\n  }\n\n  return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n *  { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n  const trimmedPathname = cleanPath(rawPathname)\n\n  const pickPaths = matchPaths.map(({ path, matchPath }) => {\n    return {\n      path: matchPath,\n      originalPath: path,\n    }\n  })\n\n  const path = pick(pickPaths, trimmedPathname)\n\n  if (path) {\n    return path.params\n  }\n\n  return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n  const trimmedPathname = trimPathname(absolutify(rawPathname))\n  if (pathCache.has(trimmedPathname)) {\n    return pathCache.get(trimmedPathname)\n  }\n\n  const redirect = maybeGetBrowserRedirect(rawPathname)\n  if (redirect) {\n    return findPath(redirect.toPath)\n  }\n\n  let foundPath = findMatchPath(trimmedPathname)\n\n  if (!foundPath) {\n    foundPath = cleanPath(rawPathname)\n  }\n\n  pathCache.set(trimmedPathname, foundPath)\n\n  return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n  const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n  let foundPath = trimmedPathname\n  if (foundPath === `/index.html`) {\n    foundPath = `/`\n  }\n\n  foundPath = normalizePagePath(foundPath)\n\n  return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n  withPrefix,\n  withAssetPrefix,\n  navigate,\n  push,\n  replace,\n  navigateTo,\n  parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n  const finalData = data\n    ? data.data\n    : staticQueryData[query] && staticQueryData[query].data\n\n  return (\n    <React.Fragment>\n      {finalData && render(finalData)}\n      {!finalData && <div>Loading (StaticQuery)</div>}\n    </React.Fragment>\n  )\n}\n\nconst StaticQuery = props => {\n  const { data, query, render, children } = props\n\n  return (\n    <StaticQueryContext.Consumer>\n      {staticQueryData => (\n        <StaticQueryDataRenderer\n          data={data}\n          query={query}\n          render={render || children}\n          staticQueryData={staticQueryData}\n        />\n      )}\n    </StaticQueryContext.Consumer>\n  )\n}\n\nconst useStaticQuery = query => {\n  if (\n    typeof React.useContext !== `function` &&\n    process.env.NODE_ENV === `development`\n  ) {\n    throw new Error(\n      `You're likely using a version of React that doesn't support Hooks\\n` +\n        `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n    )\n  }\n  const context = React.useContext(StaticQueryContext)\n\n  // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n  // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n  // catch the misuse of the API and give proper direction\n  if (isNaN(Number(query))) {\n    throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n  }\n\n  if (context[query]?.data) {\n    return context[query].data\n  } else {\n    throw new Error(\n      `The result of this StaticQuery could not be fetched.\\n\\n` +\n        `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n        `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n    )\n  }\n}\n\nStaticQuery.propTypes = {\n  data: PropTypes.object,\n  query: PropTypes.string.isRequired,\n  render: PropTypes.func,\n  children: PropTypes.func,\n}\n\nfunction graphql() {\n  throw new Error(\n    `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n      `are supposed to only be evaluated at compile time, and then compiled away. ` +\n      `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n      `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n  )\n}\n\nexport {\n  Link,\n  withAssetPrefix,\n  withPrefix,\n  graphql,\n  parsePath,\n  navigate,\n  useScrollRestoration,\n  StaticQueryContext,\n  StaticQuery,\n  PageRenderer,\n  useStaticQuery,\n  prefetchPathname,\n}\n","const support = function (feature) {\n  if (typeof document === `undefined`) {\n    return false\n  }\n  const fakeLink = document.createElement(`link`)\n  try {\n    if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n      return fakeLink.relList.supports(feature)\n    }\n  } catch (err) {\n    return false\n  }\n  return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n  return new Promise((resolve, reject) => {\n    if (typeof document === `undefined`) {\n      reject()\n      return\n    }\n\n    const link = document.createElement(`link`)\n    link.setAttribute(`rel`, `prefetch`)\n    link.setAttribute(`href`, url)\n\n    Object.keys(options).forEach(key => {\n      link.setAttribute(key, options[key])\n    })\n\n    link.onload = resolve\n    link.onerror = reject\n\n    const parentElement =\n      document.getElementsByTagName(`head`)[0] ||\n      document.getElementsByName(`script`)[0].parentNode\n    parentElement.appendChild(link)\n  })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n  return new Promise((resolve, reject) => {\n    const req = new XMLHttpRequest()\n    req.open(`GET`, url, true)\n\n    req.onload = () => {\n      if (req.status === 200) {\n        resolve()\n      } else {\n        reject()\n      }\n    }\n\n    req.send(null)\n  })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n  ? linkPrefetchStrategy\n  : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n  return new Promise(resolve => {\n    if (preFetched[url]) {\n      resolve()\n      return\n    }\n\n    supportedPrefetchStrategy(url, options)\n      .then(() => {\n        resolve()\n        preFetched[url] = true\n      })\n      .catch(() => {}) // 404s are logged to the console anyway\n  })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n  /**\n   * At least one of critical resources failed to load\n   */\n  Error: `error`,\n  /**\n   * Resources loaded successfully\n   */\n  Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n  s = s[0] === `/` ? s.slice(1) : s\n  s = s.endsWith(`/`) ? s.slice(0, -1) : s\n  return s\n}\n\nconst createPageDataUrl = rawPath => {\n  const [path, maybeSearch] = rawPath.split(`?`)\n  const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n  return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n    maybeSearch ? `?${maybeSearch}` : ``\n  }`\n}\n\nfunction doFetch(url, method = `GET`) {\n  return new Promise(resolve => {\n    const req = new XMLHttpRequest()\n    req.open(method, url, true)\n    req.onreadystatechange = () => {\n      if (req.readyState == 4) {\n        resolve(req)\n      }\n    }\n    req.send(null)\n  })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n  if (\n    `connection` in navigator &&\n    typeof navigator.connection !== `undefined`\n  ) {\n    if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n      return false\n    }\n    if (navigator.connection.saveData) {\n      return false\n    }\n  }\n  return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n  const page = {\n    componentChunkName: pageData.componentChunkName,\n    path: pageData.path,\n    webpackCompilationHash: pageData.webpackCompilationHash,\n    matchPath: pageData.matchPath,\n    staticQueryHashes: pageData.staticQueryHashes,\n    getServerDataError: pageData.getServerDataError,\n  }\n\n  return {\n    component,\n    json: pageData.result,\n    page,\n  }\n}\n\nexport class BaseLoader {\n  constructor(loadComponent, matchPaths) {\n    // Map of pagePath -> Page. Where Page is an object with: {\n    //   status: PageResourceStatus.Success || PageResourceStatus.Error,\n    //   payload: PageResources, // undefined if PageResourceStatus.Error\n    // }\n    // PageResources is {\n    //   component,\n    //   json: pageData.result,\n    //   page: {\n    //     componentChunkName,\n    //     path,\n    //     webpackCompilationHash,\n    //     staticQueryHashes\n    //   },\n    //   staticQueryResults\n    // }\n    this.pageDb = new Map()\n    this.inFlightDb = new Map()\n    this.staticQueryDb = {}\n    this.pageDataDb = new Map()\n    this.isPrefetchQueueRunning = false\n    this.prefetchQueued = []\n    this.prefetchTriggered = new Set()\n    this.prefetchCompleted = new Set()\n    this.loadComponent = loadComponent\n    setMatchPaths(matchPaths)\n  }\n\n  inFlightNetworkRequests = new Map()\n\n  memoizedGet(url) {\n    let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n    if (!inFlightPromise) {\n      inFlightPromise = doFetch(url, `GET`)\n      this.inFlightNetworkRequests.set(url, inFlightPromise)\n    }\n\n    // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n    return inFlightPromise\n      .then(response => {\n        this.inFlightNetworkRequests.delete(url)\n        return response\n      })\n      .catch(err => {\n        this.inFlightNetworkRequests.delete(url)\n        throw err\n      })\n  }\n\n  setApiRunner(apiRunner) {\n    this.apiRunner = apiRunner\n    this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n  }\n\n  fetchPageDataJson(loadObj) {\n    const { pagePath, retries = 0 } = loadObj\n    const url = createPageDataUrl(pagePath)\n    return this.memoizedGet(url).then(req => {\n      const { status, responseText } = req\n\n      // Handle 200\n      if (status === 200) {\n        try {\n          const jsonPayload = JSON.parse(responseText)\n          if (jsonPayload.path === undefined) {\n            throw new Error(`not a valid pageData response`)\n          }\n\n          const maybeSearch = pagePath.split(`?`)[1]\n          if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n            jsonPayload.path += `?${maybeSearch}`\n          }\n\n          return Object.assign(loadObj, {\n            status: PageResourceStatus.Success,\n            payload: jsonPayload,\n          })\n        } catch (err) {\n          // continue regardless of error\n        }\n      }\n\n      // Handle 404\n      if (status === 404 || status === 200) {\n        // If the request was for a 404/500 page and it doesn't exist, we're done\n        if (pagePath === `/404.html` || pagePath === `/500.html`) {\n          return Object.assign(loadObj, {\n            status: PageResourceStatus.Error,\n          })\n        }\n\n        // Need some code here to cache the 404 request. In case\n        // multiple loadPageDataJsons result in 404s\n        return this.fetchPageDataJson(\n          Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n        )\n      }\n\n      // handle 500 response (Unrecoverable)\n      if (status === 500) {\n        return this.fetchPageDataJson(\n          Object.assign(loadObj, {\n            pagePath: `/500.html`,\n            internalServerError: true,\n          })\n        )\n      }\n\n      // Handle everything else, including status === 0, and 503s. Should retry\n      if (retries < 3) {\n        return this.fetchPageDataJson(\n          Object.assign(loadObj, { retries: retries + 1 })\n        )\n      }\n\n      // Retried 3 times already, result is an error.\n      return Object.assign(loadObj, {\n        status: PageResourceStatus.Error,\n      })\n    })\n  }\n\n  loadPageDataJson(rawPath) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDataDb.has(pagePath)) {\n      const pageData = this.pageDataDb.get(pagePath)\n      if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n        return Promise.resolve(pageData)\n      }\n    }\n\n    return this.fetchPageDataJson({ pagePath }).then(pageData => {\n      this.pageDataDb.set(pagePath, pageData)\n\n      return pageData\n    })\n  }\n\n  findMatchPath(rawPath) {\n    return findMatchPath(rawPath)\n  }\n\n  // TODO check all uses of this and whether they use undefined for page resources not exist\n  loadPage(rawPath) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDb.has(pagePath)) {\n      const page = this.pageDb.get(pagePath)\n      if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n        if (page.error) {\n          return {\n            error: page.error,\n            status: page.status,\n          }\n        }\n\n        return Promise.resolve(page.payload)\n      }\n    }\n\n    if (this.inFlightDb.has(pagePath)) {\n      return this.inFlightDb.get(pagePath)\n    }\n\n    const inFlightPromise = Promise.all([\n      this.loadAppData(),\n      this.loadPageDataJson(pagePath),\n    ]).then(allData => {\n      const result = allData[1]\n      if (result.status === PageResourceStatus.Error) {\n        return {\n          status: PageResourceStatus.Error,\n        }\n      }\n\n      let pageData = result.payload\n      const { componentChunkName, staticQueryHashes = [] } = pageData\n\n      const finalResult = {}\n\n      const componentChunkPromise = this.loadComponent(componentChunkName).then(\n        component => {\n          finalResult.createdAt = new Date()\n          let pageResources\n          if (!component || component instanceof Error) {\n            finalResult.status = PageResourceStatus.Error\n            finalResult.error = component\n          } else {\n            finalResult.status = PageResourceStatus.Success\n            if (result.notFound === true) {\n              finalResult.notFound = true\n            }\n            pageData = Object.assign(pageData, {\n              webpackCompilationHash: allData[0]\n                ? allData[0].webpackCompilationHash\n                : ``,\n            })\n            pageResources = toPageResources(pageData, component)\n          }\n          // undefined if final result is an error\n          return pageResources\n        }\n      )\n\n      const staticQueryBatchPromise = Promise.all(\n        staticQueryHashes.map(staticQueryHash => {\n          // Check for cache in case this static query result has already been loaded\n          if (this.staticQueryDb[staticQueryHash]) {\n            const jsonPayload = this.staticQueryDb[staticQueryHash]\n            return { staticQueryHash, jsonPayload }\n          }\n\n          return this.memoizedGet(\n            `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n          )\n            .then(req => {\n              const jsonPayload = JSON.parse(req.responseText)\n              return { staticQueryHash, jsonPayload }\n            })\n            .catch(() => {\n              throw new Error(\n                `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n              )\n            })\n        })\n      ).then(staticQueryResults => {\n        const staticQueryResultsMap = {}\n\n        staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n          staticQueryResultsMap[staticQueryHash] = jsonPayload\n          this.staticQueryDb[staticQueryHash] = jsonPayload\n        })\n\n        return staticQueryResultsMap\n      })\n\n      return (\n        Promise.all([componentChunkPromise, staticQueryBatchPromise])\n          .then(([pageResources, staticQueryResults]) => {\n            let payload\n            if (pageResources) {\n              payload = { ...pageResources, staticQueryResults }\n              finalResult.payload = payload\n              emitter.emit(`onPostLoadPageResources`, {\n                page: payload,\n                pageResources: payload,\n              })\n            }\n\n            this.pageDb.set(pagePath, finalResult)\n\n            if (finalResult.error) {\n              return {\n                error: finalResult.error,\n                status: finalResult.status,\n              }\n            }\n\n            return payload\n          })\n          // when static-query fail to load we throw a better error\n          .catch(err => {\n            return {\n              error: err,\n              status: PageResourceStatus.Error,\n            }\n          })\n      )\n    })\n\n    inFlightPromise\n      .then(() => {\n        this.inFlightDb.delete(pagePath)\n      })\n      .catch(error => {\n        this.inFlightDb.delete(pagePath)\n        throw error\n      })\n\n    this.inFlightDb.set(pagePath, inFlightPromise)\n\n    return inFlightPromise\n  }\n\n  // returns undefined if the page does not exists in cache\n  loadPageSync(rawPath, options = {}) {\n    const pagePath = findPath(rawPath)\n    if (this.pageDb.has(pagePath)) {\n      const pageData = this.pageDb.get(pagePath)\n\n      if (pageData.payload) {\n        return pageData.payload\n      }\n\n      if (options?.withErrorDetails) {\n        return {\n          error: pageData.error,\n          status: pageData.status,\n        }\n      }\n    }\n    return undefined\n  }\n\n  shouldPrefetch(pagePath) {\n    // Skip prefetching if we know user is on slow or constrained connection\n    if (!doesConnectionSupportPrefetch()) {\n      return false\n    }\n\n    // Check if the page exists.\n    if (this.pageDb.has(pagePath)) {\n      return false\n    }\n\n    return true\n  }\n\n  prefetch(pagePath) {\n    if (!this.shouldPrefetch(pagePath)) {\n      return {\n        then: resolve => resolve(false),\n        abort: () => {},\n      }\n    }\n    if (this.prefetchTriggered.has(pagePath)) {\n      return {\n        then: resolve => resolve(true),\n        abort: () => {},\n      }\n    }\n\n    const defer = {\n      resolve: null,\n      reject: null,\n      promise: null,\n    }\n    defer.promise = new Promise((resolve, reject) => {\n      defer.resolve = resolve\n      defer.reject = reject\n    })\n    this.prefetchQueued.push([pagePath, defer])\n    const abortC = new AbortController()\n    abortC.signal.addEventListener(`abort`, () => {\n      const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n      // remove from the queue\n      if (index !== -1) {\n        this.prefetchQueued.splice(index, 1)\n      }\n    })\n\n    if (!this.isPrefetchQueueRunning) {\n      this.isPrefetchQueueRunning = true\n      setTimeout(() => {\n        this._processNextPrefetchBatch()\n      }, 3000)\n    }\n\n    return {\n      then: (resolve, reject) => defer.promise.then(resolve, reject),\n      abort: abortC.abort.bind(abortC),\n    }\n  }\n\n  _processNextPrefetchBatch() {\n    const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n    idleCallback(() => {\n      const toPrefetch = this.prefetchQueued.splice(0, 4)\n      const prefetches = Promise.all(\n        toPrefetch.map(([pagePath, dPromise]) => {\n          // Tell plugins with custom prefetching logic that they should start\n          // prefetching this path.\n          if (!this.prefetchTriggered.has(pagePath)) {\n            this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n            this.prefetchTriggered.add(pagePath)\n          }\n\n          // If a plugin has disabled core prefetching, stop now.\n          if (this.prefetchDisabled) {\n            return dPromise.resolve(false)\n          }\n\n          return this.doPrefetch(findPath(pagePath)).then(() => {\n            if (!this.prefetchCompleted.has(pagePath)) {\n              this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n              this.prefetchCompleted.add(pagePath)\n            }\n\n            dPromise.resolve(true)\n          })\n        })\n      )\n\n      if (this.prefetchQueued.length) {\n        prefetches.then(() => {\n          setTimeout(() => {\n            this._processNextPrefetchBatch()\n          }, 3000)\n        })\n      } else {\n        this.isPrefetchQueueRunning = false\n      }\n    })\n  }\n\n  doPrefetch(pagePath) {\n    const pageDataUrl = createPageDataUrl(pagePath)\n    return prefetchHelper(pageDataUrl, {\n      crossOrigin: `anonymous`,\n      as: `fetch`,\n    }).then(() =>\n      // This was just prefetched, so will return a response from\n      // the cache instead of making another request to the server\n      this.loadPageDataJson(pagePath)\n    )\n  }\n\n  hovering(rawPath) {\n    this.loadPage(rawPath)\n  }\n\n  getResourceURLsForPathname(rawPath) {\n    const pagePath = findPath(rawPath)\n    const page = this.pageDataDb.get(pagePath)\n    if (page) {\n      const pageResources = toPageResources(page.payload)\n\n      return [\n        ...createComponentUrls(pageResources.page.componentChunkName),\n        createPageDataUrl(pagePath),\n      ]\n    } else {\n      return null\n    }\n  }\n\n  isPageNotFound(rawPath) {\n    const pagePath = findPath(rawPath)\n    const page = this.pageDb.get(pagePath)\n    return !page || page.notFound\n  }\n\n  loadAppData(retries = 0) {\n    return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n      req => {\n        const { status, responseText } = req\n\n        let appData\n\n        if (status !== 200 && retries < 3) {\n          // Retry 3 times incase of non-200 responses\n          return this.loadAppData(retries + 1)\n        }\n\n        // Handle 200\n        if (status === 200) {\n          try {\n            const jsonPayload = JSON.parse(responseText)\n            if (jsonPayload.webpackCompilationHash === undefined) {\n              throw new Error(`not a valid app-data response`)\n            }\n\n            appData = jsonPayload\n          } catch (err) {\n            // continue regardless of error\n          }\n        }\n\n        return appData\n      }\n    )\n  }\n}\n\nconst createComponentUrls = componentChunkName =>\n  (window.___chunkMapping[componentChunkName] || []).map(\n    chunk => __PATH_PREFIX__ + chunk\n  )\n\nexport class ProdLoader extends BaseLoader {\n  constructor(asyncRequires, matchPaths, pageData) {\n    const loadComponent = chunkName => {\n      if (!asyncRequires.components[chunkName]) {\n        throw new Error(\n          `We couldn't find the correct component chunk with the name ${chunkName}`\n        )\n      }\n\n      return (\n        asyncRequires.components[chunkName]()\n          .then(preferDefault)\n          // loader will handle the case when component is error\n          .catch(err => err)\n      )\n    }\n\n    super(loadComponent, matchPaths)\n\n    if (pageData) {\n      this.pageDataDb.set(findPath(pageData.path), {\n        pagePath: pageData.path,\n        payload: pageData,\n        status: `success`,\n      })\n    }\n  }\n\n  doPrefetch(pagePath) {\n    return super.doPrefetch(pagePath).then(result => {\n      if (result.status !== PageResourceStatus.Success) {\n        return Promise.resolve()\n      }\n      const pageData = result.payload\n      const chunkName = pageData.componentChunkName\n      const componentUrls = createComponentUrls(chunkName)\n      return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n    })\n  }\n\n  loadPageDataJson(rawPath) {\n    return super.loadPageDataJson(rawPath).then(data => {\n      if (data.notFound) {\n        // check if html file exist using HEAD request:\n        // if it does we should navigate to it instead of showing 404\n        return doFetch(rawPath, `HEAD`).then(req => {\n          if (req.status === 200) {\n            // page (.html file) actually exist (or we asked for 404 )\n            // returning page resources status as errored to trigger\n            // regular browser navigation to given page\n            return {\n              status: PageResourceStatus.Error,\n            }\n          }\n\n          // if HEAD request wasn't 200, return notFound result\n          // and show 404 page\n          return data\n        })\n      }\n      return data\n    })\n  }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n  instance = _loader\n}\n\nexport const publicLoader = {\n  enqueue: rawPath => instance.prefetch(rawPath),\n\n  // Real methods\n  getResourceURLsForPathname: rawPath =>\n    instance.getResourceURLsForPathname(rawPath),\n  loadPage: rawPath => instance.loadPage(rawPath),\n  // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n  loadPageSync: (rawPath, options = {}) =>\n    instance.loadPageSync(rawPath, options),\n  prefetch: rawPath => instance.prefetch(rawPath),\n  isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n  hovering: rawPath => instance.hovering(rawPath),\n  loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n  if (instance) {\n    return instance.staticQueryDb\n  } else {\n    return {}\n  }\n}\n","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n  render() {\n    const props = {\n      ...this.props,\n      params: {\n        ...grabMatchParams(this.props.location.pathname),\n        ...this.props.pageResources.json.pageContext.__params,\n      },\n    }\n\n    const pageElement = createElement(this.props.pageResources.component, {\n      ...props,\n      key: this.props.path || this.props.pageResources.page.path,\n    })\n\n    const wrappedPage = apiRunner(\n      `wrapPageElement`,\n      { element: pageElement, props },\n      pageElement,\n      ({ result }) => {\n        return { element: result, props }\n      }\n    ).pop()\n\n    return wrappedPage\n  }\n}\n\nPageRenderer.propTypes = {\n  location: PropTypes.object.isRequired,\n  pageResources: PropTypes.object.isRequired,\n  data: PropTypes.object,\n  pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n  id: `gatsby-announcer`,\n  style: {\n    position: `absolute`,\n    top: 0,\n    width: 1,\n    height: 1,\n    padding: 0,\n    overflow: `hidden`,\n    clip: `rect(0, 0, 0, 0)`,\n    whiteSpace: `nowrap`,\n    border: 0,\n  },\n  \"aria-live\": `assertive`,\n  \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n  const redirect = maybeGetBrowserRedirect(pathname)\n  const { hash, search } = window.location\n\n  if (redirect != null) {\n    window.___replace(redirect.toPath + search + hash)\n    return true\n  } else {\n    return false\n  }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n  if (/loading chunk \\d* failed./i.test(event.reason)) {\n    if (nextRoute) {\n      window.location.pathname = nextRoute\n    }\n  }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n  if (!maybeRedirect(location.pathname)) {\n    nextRoute = location.pathname\n    apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n  }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n  if (!maybeRedirect(location.pathname)) {\n    apiRunner(`onRouteUpdate`, { location, prevLocation })\n    if (\n      process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n      process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n    ) {\n      emitter.emit(`onRouteUpdate`, { location, prevLocation })\n    }\n  }\n}\n\nconst navigate = (to, options = {}) => {\n  // Support forward/backward navigation with numbers\n  // navigate(-2) (jumps back 2 history steps)\n  // navigate(2)  (jumps forward 2 history steps)\n  if (typeof to === `number`) {\n    globalHistory.navigate(to)\n    return\n  }\n\n  const { pathname, search, hash } = parsePath(to)\n  const redirect = maybeGetBrowserRedirect(pathname)\n\n  // If we're redirecting, just replace the passed in pathname\n  // to the one we want to redirect to.\n  if (redirect) {\n    to = redirect.toPath + search + hash\n  }\n\n  // If we had a service worker update, no matter the path, reload window and\n  // reset the pathname whitelist\n  if (window.___swUpdated) {\n    window.location = pathname + search + hash\n    return\n  }\n\n  // Start a timer to wait for a second before transitioning and showing a\n  // loader in case resources aren't around yet.\n  const timeoutId = setTimeout(() => {\n    emitter.emit(`onDelayedLoadPageResources`, { pathname })\n    apiRunner(`onRouteUpdateDelayed`, {\n      location: window.location,\n    })\n  }, 1000)\n\n  loader.loadPage(pathname + search).then(pageResources => {\n    // If no page resources, then refresh the page\n    // Do this, rather than simply `window.location.reload()`, so that\n    // pressing the back/forward buttons work - otherwise when pressing\n    // back, the browser will just change the URL and expect JS to handle\n    // the change, which won't always work since it might not be a Gatsby\n    // page.\n    if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n      window.history.replaceState({}, ``, location.href)\n      window.location = pathname\n      clearTimeout(timeoutId)\n      return\n    }\n\n    // If the loaded page has a different compilation hash to the\n    // window, then a rebuild has occurred on the server. Reload.\n    if (process.env.NODE_ENV === `production` && pageResources) {\n      if (\n        pageResources.page.webpackCompilationHash !==\n        window.___webpackCompilationHash\n      ) {\n        // Purge plugin-offline cache\n        if (\n          `serviceWorker` in navigator &&\n          navigator.serviceWorker.controller !== null &&\n          navigator.serviceWorker.controller.state === `activated`\n        ) {\n          navigator.serviceWorker.controller.postMessage({\n            gatsbyApi: `clearPathResources`,\n          })\n        }\n\n        window.location = pathname + search + hash\n      }\n    }\n    reachNavigate(to, options)\n    clearTimeout(timeoutId)\n  })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n  const { pathname, hash } = location\n  const results = apiRunner(`shouldUpdateScroll`, {\n    prevRouterProps,\n    // `pathname` for backwards compatibility\n    pathname,\n    routerProps: { location },\n    getSavedScrollPosition: args => [\n      0,\n      // FIXME this is actually a big code smell, we should fix this\n      // eslint-disable-next-line @babel/no-invalid-this\n      this._stateStorage.read(args, args.key),\n    ],\n  })\n  if (results.length > 0) {\n    // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n    // @see https://github.com/gatsbyjs/gatsby/issues/12038\n    return results[results.length - 1]\n  }\n\n  if (prevRouterProps) {\n    const {\n      location: { pathname: oldPathname },\n    } = prevRouterProps\n    if (oldPathname === pathname) {\n      // Scroll to element if it exists, if it doesn't, or no hash is provided,\n      // scroll to top.\n      return hash ? decodeURI(hash.slice(1)) : [0, 0]\n    }\n  }\n  return true\n}\n\nfunction init() {\n  // The \"scroll-behavior\" package expects the \"action\" to be on the location\n  // object so let's copy it over.\n  globalHistory.listen(args => {\n    args.location.action = args.action\n  })\n\n  window.___push = to => navigate(to, { replace: false })\n  window.___replace = to => navigate(to, { replace: true })\n  window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n  constructor(props) {\n    super(props)\n    this.announcementRef = React.createRef()\n  }\n\n  componentDidUpdate(prevProps, nextProps) {\n    requestAnimationFrame(() => {\n      let pageName = `new page at ${this.props.location.pathname}`\n      if (document.title) {\n        pageName = document.title\n      }\n      const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n      if (pageHeadings && pageHeadings.length) {\n        pageName = pageHeadings[0].textContent\n      }\n      const newAnnouncement = `Navigated to ${pageName}`\n      if (this.announcementRef.current) {\n        const oldAnnouncement = this.announcementRef.current.innerText\n        if (oldAnnouncement !== newAnnouncement) {\n          this.announcementRef.current.innerText = newAnnouncement\n        }\n      }\n    })\n  }\n\n  render() {\n    return <div {...RouteAnnouncerProps} ref={this.announcementRef}></div>\n  }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n  if (prevLocation.href !== nextLocation.href) {\n    return true\n  }\n\n  if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n    return true\n  }\n\n  return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n  constructor(props) {\n    super(props)\n    onPreRouteUpdate(props.location, null)\n  }\n\n  componentDidMount() {\n    onRouteUpdate(this.props.location, null)\n  }\n\n  shouldComponentUpdate(prevProps) {\n    if (compareLocationProps(prevProps.location, this.props.location)) {\n      onPreRouteUpdate(this.props.location, prevProps.location)\n      return true\n    }\n    return false\n  }\n\n  componentDidUpdate(prevProps) {\n    if (compareLocationProps(prevProps.location, this.props.location)) {\n      onRouteUpdate(this.props.location, prevProps.location)\n    }\n  }\n\n  render() {\n    return (\n      <React.Fragment>\n        {this.props.children}\n        <RouteAnnouncer location={location} />\n      </React.Fragment>\n    )\n  }\n}\n\nRouteUpdates.propTypes = {\n  location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n  for (var i in a) {\n    if (!(i in b)) return true;\n  }for (var _i in b) {\n    if (a[_i] !== b[_i]) return true;\n  }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n  return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n  constructor(props) {\n    super()\n    const { location, pageResources } = props\n    this.state = {\n      location: { ...location },\n      pageResources:\n        pageResources ||\n        loader.loadPageSync(location.pathname + location.search, {\n          withErrorDetails: true,\n        }),\n    }\n  }\n\n  static getDerivedStateFromProps({ location }, prevState) {\n    if (prevState.location.href !== location.href) {\n      const pageResources = loader.loadPageSync(\n        location.pathname + location.search,\n        {\n          withErrorDetails: true,\n        }\n      )\n\n      return {\n        pageResources,\n        location: { ...location },\n      }\n    }\n\n    return {\n      location: { ...location },\n    }\n  }\n\n  loadResources(rawPath) {\n    loader.loadPage(rawPath).then(pageResources => {\n      if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n        this.setState({\n          location: { ...window.location },\n          pageResources,\n        })\n      } else {\n        window.history.replaceState({}, ``, location.href)\n        window.location = rawPath\n      }\n    })\n  }\n\n  shouldComponentUpdate(nextProps, nextState) {\n    // Always return false if we're missing resources.\n    if (!nextState.pageResources) {\n      this.loadResources(\n        nextProps.location.pathname + nextProps.location.search\n      )\n      return false\n    }\n\n    if (\n      process.env.BUILD_STAGE === `develop` &&\n      nextState.pageResources.stale\n    ) {\n      this.loadResources(\n        nextProps.location.pathname + nextProps.location.search\n      )\n      return false\n    }\n\n    // Check if the component or json have changed.\n    if (this.state.pageResources !== nextState.pageResources) {\n      return true\n    }\n    if (\n      this.state.pageResources.component !== nextState.pageResources.component\n    ) {\n      return true\n    }\n\n    if (this.state.pageResources.json !== nextState.pageResources.json) {\n      return true\n    }\n    // Check if location has changed on a page using internal routing\n    // via matchPath configuration.\n    if (\n      this.state.location.key !== nextState.location.key &&\n      nextState.pageResources.page &&\n      (nextState.pageResources.page.matchPath ||\n        nextState.pageResources.page.path)\n    ) {\n      return true\n    }\n    return shallowCompare(this, nextProps, nextState)\n  }\n\n  render() {\n    if (\n      process.env.NODE_ENV !== `production` &&\n      (!this.state.pageResources ||\n        this.state.pageResources.status === PageResourceStatus.Error)\n    ) {\n      const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n      if (this.state.pageResources?.error) {\n        console.error(message)\n        throw this.state.pageResources.error\n      }\n\n      throw new Error(message)\n    }\n\n    return this.props.children(this.state)\n  }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n  shouldUpdateScroll,\n  init as navigationInit,\n  RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n  setLoader,\n  ProdLoader,\n  publicLoader,\n  PageResourceStatus,\n  getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n  // Let plugins register a service worker. The plugin just needs\n  // to return true.\n  if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n    require(`./register-service-worker`)\n  }\n\n  // In gatsby v2 if Router is used in page using matchPaths\n  // paths need to contain full path.\n  // For example:\n  //   - page have `/app/*` matchPath\n  //   - inside template user needs to use `/app/xyz` as path\n  // Resetting `basepath`/`baseuri` keeps current behaviour\n  // to not introduce breaking change.\n  // Remove this in v3\n  const RouteHandler = props => (\n    <BaseContext.Provider\n      value={{\n        baseuri: `/`,\n        basepath: `/`,\n      }}\n    >\n      <PageRenderer {...props} />\n    </BaseContext.Provider>\n  )\n\n  const DataContext = React.createContext({})\n\n  class GatsbyRoot extends React.Component {\n    render() {\n      const { children } = this.props\n      return (\n        <Location>\n          {({ location }) => (\n            <EnsureResources location={location}>\n              {({ pageResources, location }) => {\n                const staticQueryResults = getStaticQueryResults()\n                return (\n                  <StaticQueryContext.Provider value={staticQueryResults}>\n                    <DataContext.Provider value={{ pageResources, location }}>\n                      {children}\n                    </DataContext.Provider>\n                  </StaticQueryContext.Provider>\n                )\n              }}\n            </EnsureResources>\n          )}\n        </Location>\n      )\n    }\n  }\n\n  class LocationHandler extends React.Component {\n    render() {\n      return (\n        <DataContext.Consumer>\n          {({ pageResources, location }) => (\n            <RouteUpdates location={location}>\n              <ScrollContext\n                location={location}\n                shouldUpdateScroll={shouldUpdateScroll}\n              >\n                <Router\n                  basepath={__BASE_PATH__}\n                  location={location}\n                  id=\"gatsby-focus-wrapper\"\n                >\n                  <RouteHandler\n                    path={\n                      pageResources.page.path === `/404.html` ||\n                      pageResources.page.path === `/500.html`\n                        ? stripPrefix(location.pathname, __BASE_PATH__)\n                        : encodeURI(\n                            (\n                              pageResources.page.matchPath ||\n                              pageResources.page.path\n                            ).split(`?`)[0]\n                          )\n                    }\n                    {...this.props}\n                    location={location}\n                    pageResources={pageResources}\n                    {...pageResources.json}\n                  />\n                </Router>\n              </ScrollContext>\n            </RouteUpdates>\n          )}\n        </DataContext.Consumer>\n      )\n    }\n  }\n\n  const { pagePath, location: browserLoc } = window\n\n  // Explicitly call navigate if the canonical path (window.pagePath)\n  // is different to the browser path (window.location.pathname). SSR\n  // page paths might include search params, while SSG and DSG won't.\n  // If page path include search params we also compare query params.\n  // But only if NONE of the following conditions hold:\n  //\n  // - The url matches a client side route (page.matchPath)\n  // - it's a 404 page\n  // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n  if (\n    pagePath &&\n    __BASE_PATH__ + pagePath !==\n      browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n    !(\n      loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n      pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n      pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n    )\n  ) {\n    navigate(\n      __BASE_PATH__ +\n        pagePath +\n        (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n        browserLoc.hash,\n      {\n        replace: true,\n      }\n    )\n  }\n\n  // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n  const getSessionStorage = () => {\n    try {\n      return sessionStorage\n    } catch {\n      return null\n    }\n  }\n\n  publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n    const sessionStorage = getSessionStorage()\n\n    if (\n      page?.page?.webpackCompilationHash &&\n      page.page.webpackCompilationHash !== window.___webpackCompilationHash\n    ) {\n      // Purge plugin-offline cache\n      if (\n        `serviceWorker` in navigator &&\n        navigator.serviceWorker.controller !== null &&\n        navigator.serviceWorker.controller.state === `activated`\n      ) {\n        navigator.serviceWorker.controller.postMessage({\n          gatsbyApi: `clearPathResources`,\n        })\n      }\n\n      // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n      // with our data (coming from `app-data.json` file). This can cause issues such as\n      // errors trying to load static queries (as list of static queries is inside `page-data`\n      // which might not match to currently loaded `.js` scripts).\n      // We are making attempt to reload if hashes don't match, but we also have to handle case\n      // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n      if (sessionStorage) {\n        const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n        if (!isReloaded) {\n          sessionStorage.setItem(reloadStorageKey, `1`)\n          window.location.reload(true)\n          return\n        }\n      }\n    }\n\n    if (sessionStorage) {\n      sessionStorage.removeItem(reloadStorageKey)\n    }\n\n    if (!page || page.status === PageResourceStatus.Error) {\n      const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n      // if the chunk throws an error we want to capture the real error\n      // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n      if (page && page.error) {\n        console.error(message)\n        throw page.error\n      }\n\n      throw new Error(message)\n    }\n\n    const SiteRoot = apiRunner(\n      `wrapRootElement`,\n      { element: <LocationHandler /> },\n      <LocationHandler />,\n      ({ result }) => {\n        return { element: result }\n      }\n    ).pop()\n\n    const App = function App() {\n      const onClientEntryRanRef = React.useRef(false)\n\n      React.useEffect(() => {\n        if (!onClientEntryRanRef.current) {\n          onClientEntryRanRef.current = true\n          if (performance.mark) {\n            performance.mark(`onInitialClientRender`)\n          }\n\n          apiRunner(`onInitialClientRender`)\n        }\n      }, [])\n\n      return <GatsbyRoot>{SiteRoot}</GatsbyRoot>\n    }\n\n    const renderer = apiRunner(\n      `replaceHydrateFunction`,\n      undefined,\n      ReactDOM.hydrateRoot ? ReactDOM.hydrateRoot : ReactDOM.hydrate\n    )[0]\n\n    function runRender() {\n      const rootElement =\n        typeof window !== `undefined`\n          ? document.getElementById(`___gatsby`)\n          : null\n\n      if (renderer === ReactDOM.hydrateRoot) {\n        renderer(rootElement, <App />)\n      } else {\n        renderer(<App />, rootElement)\n      }\n    }\n\n    // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n    // TODO remove IE 10 support\n    const doc = document\n    if (\n      doc.readyState === `complete` ||\n      (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n    ) {\n      setTimeout(function () {\n        runRender()\n      }, 0)\n    } else {\n      const handler = function () {\n        doc.removeEventListener(`DOMContentLoaded`, handler, false)\n        window.removeEventListener(`load`, handler, false)\n\n        runRender()\n      }\n\n      doc.addEventListener(`DOMContentLoaded`, handler, false)\n      window.addEventListener(`load`, handler, false)\n    }\n  })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n  const pageResources = loader.loadPageSync(location.pathname)\n  if (!pageResources) {\n    return null\n  }\n  return React.createElement(InternalPageRenderer, {\n    location,\n    pageResources,\n    ...pageResources.json,\n  })\n}\n\nProdPageRenderer.propTypes = {\n  location: PropTypes.shape({\n    pathname: PropTypes.string.isRequired,\n  }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n  module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n  module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n  module.exports = () => null\n}\n","exports.polyfill = Component => Component\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n  if (redirect.ignoreCase) {\n    redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n  } else {\n    redirectMap.set(redirect.fromPath, redirect)\n  }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n  let redirect = redirectMap.get(pathname)\n  if (!redirect) {\n    redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n  }\n  return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n  window.location.protocol !== `https:` &&\n  window.location.hostname !== `localhost`\n) {\n  console.error(\n    `Service workers can only be used over HTTPS, or on localhost for development`\n  )\n} else if (`serviceWorker` in navigator) {\n  navigator.serviceWorker\n    .register(`${__BASE_PATH__}/sw.js`)\n    .then(function (reg) {\n      reg.addEventListener(`updatefound`, () => {\n        apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n        // The updatefound event implies that reg.installing is set; see\n        // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n        const installingWorker = reg.installing\n        console.log(`installingWorker`, installingWorker)\n        installingWorker.addEventListener(`statechange`, () => {\n          switch (installingWorker.state) {\n            case `installed`:\n              if (navigator.serviceWorker.controller) {\n                // At this point, the old content will have been purged and the fresh content will\n                // have been added to the cache.\n\n                // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n                window.___swUpdated = true\n                // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n                apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n                // If resources failed for the current page, reload.\n                if (window.___failedResources) {\n                  console.log(`resources failed, SW updated - reloading`)\n                  window.location.reload()\n                }\n              } else {\n                // At this point, everything has been precached.\n                // It's the perfect time to display a \"Content is cached for offline use.\" message.\n                console.log(`Content is now available offline!`)\n\n                // Post to service worker that install is complete.\n                // Delay to allow time for the event listener to be added --\n                // otherwise fetch is called too soon and resources aren't cached.\n                apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n              }\n              break\n\n            case `redundant`:\n              console.error(`The installing service worker became redundant.`)\n              apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n              break\n\n            case `activated`:\n              apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n              break\n          }\n        })\n      })\n    })\n    .catch(function (e) {\n      console.error(`Error during service worker registration:`, e)\n    })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n  if (!prefix) {\n    return str\n  }\n\n  if (str === prefix) {\n    return `/`\n  }\n\n  if (str.startsWith(`${prefix}/`)) {\n    return str.slice(prefix.length)\n  }\n\n  return str\n}\n","function _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\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\nexport function hasXMLHttpRequest() {\n  return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\n\nfunction isPromise(maybePromise) {\n  return !!maybePromise && typeof maybePromise.then === 'function';\n}\n\nexport function makePromise(maybePromise) {\n  if (isPromise(maybePromise)) {\n    return maybePromise;\n  }\n\n  return Promise.resolve(maybePromise);\n}","function _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\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\n\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch;\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch;\n  }\n}\n\nvar XmlHttpRequestApi;\n\nif (hasXMLHttpRequest()) {\n  if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n    XmlHttpRequestApi = global.XMLHttpRequest;\n  } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n    XmlHttpRequestApi = window.XMLHttpRequest;\n  }\n}\n\nvar ActiveXObjectApi;\n\nif (typeof ActiveXObject === 'function') {\n  if (typeof global !== 'undefined' && global.ActiveXObject) {\n    ActiveXObjectApi = global.ActiveXObject;\n  } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n    ActiveXObjectApi = window.ActiveXObject;\n  }\n}\n\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\n\nvar addQueryString = function addQueryString(url, params) {\n  if (params && _typeof(params) === 'object') {\n    var queryString = '';\n\n    for (var paramName in params) {\n      queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n    }\n\n    if (!queryString) return url;\n    url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n  }\n\n  return url;\n};\n\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n  if (payload) headers['Content-Type'] = 'application/json';\n  fetchApi(url, defaults({\n    method: payload ? 'POST' : 'GET',\n    body: payload ? options.stringify(payload) : undefined,\n    headers: headers\n  }, typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions)).then(function (response) {\n    if (!response.ok) return callback(response.statusText || 'Error', {\n      status: response.status\n    });\n    response.text().then(function (data) {\n      callback(null, {\n        status: response.status,\n        data: data\n      });\n    }).catch(callback);\n  }).catch(callback);\n};\n\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n  if (payload && _typeof(payload) === 'object') {\n    payload = addQueryString('', payload).slice(1);\n  }\n\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  try {\n    var x;\n\n    if (XmlHttpRequestApi) {\n      x = new XmlHttpRequestApi();\n    } else {\n      x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n    }\n\n    x.open(payload ? 'POST' : 'GET', url, 1);\n\n    if (!options.crossDomain) {\n      x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n\n    x.withCredentials = !!options.withCredentials;\n\n    if (payload) {\n      x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n\n    if (x.overrideMimeType) {\n      x.overrideMimeType('application/json');\n    }\n\n    var h = options.customHeaders;\n    h = typeof h === 'function' ? h() : h;\n\n    if (h) {\n      for (var i in h) {\n        x.setRequestHeader(i, h[i]);\n      }\n    }\n\n    x.onreadystatechange = function () {\n      x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n        status: x.status,\n        data: x.responseText\n      });\n    };\n\n    x.send(payload);\n  } catch (e) {\n    console && console.log(e);\n  }\n};\n\nvar request = function request(options, url, payload, callback) {\n  if (typeof payload === 'function') {\n    callback = payload;\n    payload = undefined;\n  }\n\n  callback = callback || function () {};\n\n  if (fetchApi) {\n    return requestWithFetch(options, url, payload, callback);\n  }\n\n  if (hasXMLHttpRequest() || typeof ActiveXObject === 'function') {\n    return requestWithXmlHttpRequest(options, url, payload, callback);\n  }\n};\n\nexport default request;","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\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\nimport { defaults, makePromise } from './utils.js';\nimport request from './request.js';\n\nvar getDefaults = function getDefaults() {\n  return {\n    loadPath: '/locales/{{lng}}/{{ns}}.json',\n    addPath: '/locales/add/{{lng}}/{{ns}}',\n    allowMultiLoading: false,\n    parse: function parse(data) {\n      return JSON.parse(data);\n    },\n    stringify: JSON.stringify,\n    parsePayload: function parsePayload(namespace, key, fallbackValue) {\n      return _defineProperty({}, key, fallbackValue || '');\n    },\n    request: request,\n    reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n    customHeaders: {},\n    queryStringParams: {},\n    crossDomain: false,\n    withCredentials: false,\n    overrideMimeType: false,\n    requestOptions: {\n      mode: 'cors',\n      credentials: 'same-origin',\n      cache: 'default'\n    }\n  };\n};\n\nvar Backend = function () {\n  function Backend(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    _classCallCheck(this, Backend);\n\n    this.services = services;\n    this.options = options;\n    this.allOptions = allOptions;\n    this.type = 'backend';\n    this.init(services, options, allOptions);\n  }\n\n  _createClass(Backend, [{\n    key: \"init\",\n    value: function init(services) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      this.services = services;\n      this.options = defaults(options, this.options || {}, getDefaults());\n      this.allOptions = allOptions;\n\n      if (this.services && this.options.reloadInterval) {\n        setInterval(function () {\n          return _this.reload();\n        }, this.options.reloadInterval);\n      }\n    }\n  }, {\n    key: \"readMulti\",\n    value: function readMulti(languages, namespaces, callback) {\n      this._readAny(languages, languages, namespaces, namespaces, callback);\n    }\n  }, {\n    key: \"read\",\n    value: function read(language, namespace, callback) {\n      this._readAny([language], language, [namespace], namespace, callback);\n    }\n  }, {\n    key: \"_readAny\",\n    value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n      var _this2 = this;\n\n      var loadPath = this.options.loadPath;\n\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath(languages, namespaces);\n      }\n\n      loadPath = makePromise(loadPath);\n      loadPath.then(function (resolvedLoadPath) {\n        if (!resolvedLoadPath) return callback(null, {});\n\n        var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n          lng: languages.join('+'),\n          ns: namespaces.join('+')\n        });\n\n        _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n      });\n    }\n  }, {\n    key: \"loadUrl\",\n    value: function loadUrl(url, callback, languages, namespaces) {\n      var _this3 = this;\n\n      this.options.request(this.options, url, undefined, function (err, res) {\n        if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n        if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n        if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n        if (err) return callback(err, false);\n        var ret, parseErr;\n\n        try {\n          if (typeof res.data === 'string') {\n            ret = _this3.options.parse(res.data, languages, namespaces);\n          } else {\n            ret = res.data;\n          }\n        } catch (e) {\n          parseErr = 'failed parsing ' + url + ' to json';\n        }\n\n        if (parseErr) return callback(parseErr, false);\n        callback(null, ret);\n      });\n    }\n  }, {\n    key: \"create\",\n    value: function create(languages, namespace, key, fallbackValue, callback) {\n      var _this4 = this;\n\n      if (!this.options.addPath) return;\n      if (typeof languages === 'string') languages = [languages];\n      var payload = this.options.parsePayload(namespace, key, fallbackValue);\n      var finished = 0;\n      var dataArray = [];\n      var resArray = [];\n      languages.forEach(function (lng) {\n        var addPath = _this4.options.addPath;\n\n        if (typeof _this4.options.addPath === 'function') {\n          addPath = _this4.options.addPath(lng, namespace);\n        }\n\n        var url = _this4.services.interpolator.interpolate(addPath, {\n          lng: lng,\n          ns: namespace\n        });\n\n        _this4.options.request(_this4.options, url, payload, function (data, res) {\n          finished += 1;\n          dataArray.push(data);\n          resArray.push(res);\n\n          if (finished === languages.length) {\n            if (callback) callback(dataArray, resArray);\n          }\n        });\n      });\n    }\n  }, {\n    key: \"reload\",\n    value: function reload() {\n      var _this5 = this;\n\n      var _this$services = this.services,\n          backendConnector = _this$services.backendConnector,\n          languageUtils = _this$services.languageUtils,\n          logger = _this$services.logger;\n      var currentLanguage = backendConnector.language;\n      if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n      var toLoad = [];\n\n      var append = function append(lng) {\n        var lngs = languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(function (l) {\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n\n      append(currentLanguage);\n      if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n        return append(l);\n      });\n      toLoad.forEach(function (lng) {\n        _this5.allOptions.ns.forEach(function (ns) {\n          backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n            if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n            if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n            backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n          });\n        });\n      });\n    }\n  }]);\n\n  return Backend;\n}();\n\nBackend.type = 'backend';\nexport default Backend;","import { MutableRefObject, useCallback, useEffect, useRef } from \"react\";\n\nexport type OutsideClickOptions<T extends HTMLElement> = {\n  el?: MutableRefObject<T>,\n  ignore?: MutableRefObject<any>[]\n}\n\nexport default function useOutsideClick<T extends HTMLElement>(handler: () => void, {el, ignore}: OutsideClickOptions<T> = {}) {\n  let ref = useRef<T>();\n\n  if(el) ref = el;\n\n  const handlerCallback = useCallback(\n    (e: any) => {\n      if (!ref.current || ref.current.contains(e.target)) {\n        e.stopPropagation();\n        return;\n      }\n\n      if(ignore) {\n        for (const ignoreRef of ignore) {\n          if(ignoreRef.current !== null && ignoreRef.current.contains(e.target)) {\n            e.stopPropagation();\n            return\n          };\n        }\n      }\n\n      handler();\n    },\n    [handler, ignore]\n  );\n\n  const callbackRef = useCallback((node: any) => {\n    if (!node) return;\n    ref.current = node;\n  }, []);\n\n  useEffect(() => {\n    document.addEventListener(\"mousedown\", handlerCallback);\n\n    return () => {\n      document.removeEventListener(\"mousedown\", handlerCallback);\n    };\n  }, [handlerCallback]);\n\n  return callbackRef;\n};\n","import { graphql, useStaticQuery } from 'gatsby';\nimport upperFirst from 'lodash/upperFirst';\nimport React from 'react';\nimport StrapiImage, { StrapiImageProps } from './StrapiImage';\n\nexport type LogoProps = {\n  colour?: 'positive' | 'negative';\n  format?: 'logo' | 'icon';\n} & Omit<StrapiImageProps, 'image' | 'alt' | 'color' | 'fitWidth'>;\n\nexport default function Logo({\n  colour = 'positive',\n  format = 'logo',\n  ...props\n}: LogoProps) {\n  const data = useStaticQuery(graphql`\n    query LogoQuery {\n      strapiLogo {\n        logoPositive {\n          ...StrapiImageConstrained\n        }\n        logoNegative {\n          ...StrapiImageConstrained\n        }\n        iconPositive {\n          ...StrapiImageConstrained\n        }\n        iconNegative {\n          ...StrapiImageConstrained\n        }\n      }\n    }\n  `);\n\n  return (\n    <StrapiImage\n      fitWidth={true}\n      image={data.strapiLogo[`${format}${upperFirst(colour)}`]}\n      {...props}\n    />\n  );\n}\n","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nexport default function getBoundingClientRect(element, includeScale) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  var rect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (isHTMLElement(element) && includeScale) {\n    var offsetHeight = element.offsetHeight;\n    var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n    // Fallback to 1 in case both values are `0`\n\n    if (offsetWidth > 0) {\n      scaleX = round(rect.width) / offsetWidth || 1;\n    }\n\n    if (offsetHeight > 0) {\n      scaleY = round(rect.height) / offsetHeight || 1;\n    }\n  }\n\n  return {\n    width: rect.width / scaleX,\n    height: rect.height / scaleY,\n    top: rect.top / scaleY,\n    right: rect.right / scaleX,\n    bottom: rect.bottom / scaleY,\n    left: rect.left / scaleX,\n    x: rect.left / scaleX,\n    y: rect.top / scaleY\n  };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n  var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name; // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n    var next = child;\n\n    do {\n      if (next && parent.isSameNode(next)) {\n        return true;\n      } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n      next = next.parentNode || next.host;\n    } while (next);\n  } // Give up, the result is false\n\n\n  return false;\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n  var rect = getBoundingClientRect(element);\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n  // can be obscured underneath it.\n  // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n  // if it isn't open, so if this isn't available, the popper will be detected\n  // to overflow the bottom of the screen too early.\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n    // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n    // errors due to floating point numbers, so we need to check precision.\n    // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n    // Feature detection fails in mobile emulation mode in Chrome.\n    // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n    // 0.001\n    // Fallback here: \"Not Safari\" userAgent\n\n    if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import * as React from 'react';\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\n\nexport var unwrapArray = function unwrapArray(arg) {\n  return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n  if (typeof fn === 'function') {\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    return fn.apply(void 0, args);\n  }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n  // if its a function call it\n  if (typeof ref === 'function') {\n    return safeInvoke(ref, node);\n  } // otherwise we should treat it as a ref object\n  else if (ref != null) {\n    ref.current = node;\n  }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n  return entries.reduce(function (acc, _ref) {\n    var key = _ref[0],\n        value = _ref[1];\n    acc[key] = value;\n    return acc;\n  }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","import * as React from 'react';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var prevOptions = React.useRef(null);\n  var optionsWithDefaults = {\n    onFirstUpdate: options.onFirstUpdate,\n    placement: options.placement || 'bottom',\n    strategy: options.strategy || 'absolute',\n    modifiers: options.modifiers || EMPTY_MODIFIERS\n  };\n\n  var _React$useState = React.useState({\n    styles: {\n      popper: {\n        position: optionsWithDefaults.strategy,\n        left: '0',\n        top: '0'\n      },\n      arrow: {\n        position: 'absolute'\n      }\n    },\n    attributes: {}\n  }),\n      state = _React$useState[0],\n      setState = _React$useState[1];\n\n  var updateStateModifier = React.useMemo(function () {\n    return {\n      name: 'updateState',\n      enabled: true,\n      phase: 'write',\n      fn: function fn(_ref) {\n        var state = _ref.state;\n        var elements = Object.keys(state.elements);\n        setState({\n          styles: fromEntries(elements.map(function (element) {\n            return [element, state.styles[element] || {}];\n          })),\n          attributes: fromEntries(elements.map(function (element) {\n            return [element, state.attributes[element]];\n          }))\n        });\n      },\n      requires: ['computeStyles']\n    };\n  }, []);\n  var popperOptions = React.useMemo(function () {\n    var newOptions = {\n      onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n      placement: optionsWithDefaults.placement,\n      strategy: optionsWithDefaults.strategy,\n      modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n        name: 'applyStyles',\n        enabled: false\n      }])\n    };\n\n    if (isEqual(prevOptions.current, newOptions)) {\n      return prevOptions.current || newOptions;\n    } else {\n      prevOptions.current = newOptions;\n      return newOptions;\n    }\n  }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n  var popperInstanceRef = React.useRef();\n  useIsomorphicLayoutEffect(function () {\n    if (popperInstanceRef.current) {\n      popperInstanceRef.current.setOptions(popperOptions);\n    }\n  }, [popperOptions]);\n  useIsomorphicLayoutEffect(function () {\n    if (referenceElement == null || popperElement == null) {\n      return;\n    }\n\n    var createPopper = options.createPopper || defaultCreatePopper;\n    var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n    popperInstanceRef.current = popperInstance;\n    return function () {\n      popperInstance.destroy();\n      popperInstanceRef.current = null;\n    };\n  }, [referenceElement, popperElement, options.createPopper]);\n  return {\n    state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n    styles: state.styles,\n    attributes: state.attributes,\n    update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n    forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n  };\n};","import { Placement } from '@popperjs/core';\nimport React, {\n  HTMLProps,\n  ReactNode,\n  useLayoutEffect,\n  useMemo,\n  useState,\n} from 'react';\nimport { useEffect } from 'react';\nimport { usePopper } from 'react-popper';\nimport useHover from '../../hooks/useHover';\nimport useOutsideClick from '../../hooks/useOutsideClick';\n\nexport type PopoverProps = {\n  children: ReactNode;\n  content: ReactNode;\n  keepDom?: boolean;\n  interval?: number;\n  timeout?: number;\n  open?: boolean;\n  placement?: Placement;\n} & Omit<\n  HTMLProps<HTMLDivElement>,\n  'content' | 'onTouchStart' | 'onMouseEnter' | 'onMouseLeave'\n>;\n\nexport default function Popover({\n  children,\n  content,\n  keepDom = false,\n  interval = 0,\n  timeout = 0,\n  open = null,\n  placement,\n  ...props\n}: PopoverProps) {\n  const [referenceElement, setReferenceElement] =\n    useState<HTMLDivElement>(null);\n  const [popperElement, setPopperElement] = useState<HTMLDivElement>(null);\n  const [isOpen, setOpen] = useState(open ?? false);\n  useHover({\n    ref: { current: referenceElement },\n    interval,\n    timeout,\n    onStartHover: () => open === null && setOpen(true),\n    onEndHover: () => open === null && setOpen(false),\n  });\n\n  const modifiers: any = useMemo(\n    () => [\n      {\n        name: 'sameWidth',\n        enabled: true,\n        fn: ({ state }) => {\n          state.styles.popper.minWidth = `${state.rects.reference.width}px`;\n        },\n        phase: 'beforeWrite',\n        requires: ['computeStyles'],\n      },\n    ],\n    []\n  );\n\n  const { styles, attributes, update } = usePopper(\n    referenceElement,\n    popperElement,\n    {\n      placement,\n      modifiers,\n    }\n  );\n\n  useEffect(() => {\n    setOpen(open);\n  }, [open]);\n\n  useLayoutEffect(() => {\n    update && update();\n  }, [isOpen]);\n\n  useOutsideClick(\n    () => {\n      if (open === null && isOpen) {\n        setOpen(false);\n      }\n    },\n    { el: { current: referenceElement } }\n  );\n\n  return (\n    <>\n      <div\n        onTouchStart={() => open === null && setOpen(true)}\n        ref={setReferenceElement}\n        {...props}\n      >\n        {children}\n\n        {(isOpen || keepDom) && (\n          <div\n            ref={setPopperElement}\n            style={{\n              ...styles.popper,\n              display: isOpen || !keepDom ? 'block' : 'none',\n              zIndex: 1000,\n            }}\n            {...attributes.popper}\n          >\n            {content}\n          </div>\n        )}\n      </div>\n    </>\n  );\n}\n","import { MutableRefObject, useCallback, useRef, useState } from \"react\";\nimport { useEffect } from \"react\";\n\nexport type HoverOptions<T extends HTMLElement> = {\n    ref: MutableRefObject<T>;\n    interval?: number;\n    sensitivity?: number;\n    timeout?: number;\n    onStartHover?: () => void;\n    onEndHover?: () => void;\n};\n\nexport default function useHover<T extends HTMLElement>({\n    ref,\n    interval = 100,\n    sensitivity = 10,\n    timeout = 0,\n    onStartHover,\n    onEndHover\n}: HoverOptions<T>) {\n    const [isHovering, setIsHovering] = useState(false);\n    const timer = useRef(null);\n    const mouseLocation = useRef({x:0, y:0, pX: 0, pY: 0});\n\n    const updateHovering = useCallback((value: boolean) => {\n        if(!isHovering && value && onStartHover) {\n            onStartHover();\n        }\n\n        if(isHovering && !value && onEndHover) {\n            onEndHover();\n        }\n\n        setIsHovering(value);\n    }, [isHovering, onStartHover, onEndHover]);\n\n    const resetTimer = useCallback(() => {\n        if(timer.current) {\n            clearTimeout(timer.current);\n            timer.current = null;\n        }\n    }, [])\n\n    const handleDelayedMouseOut = useCallback(() => {\n        resetTimer();\n        updateHovering(false);\n    }, [updateHovering])\n\n    const handleTick = useCallback(() => {\n        resetTimer();\n\n        if (Math.abs(mouseLocation.current.pX - mouseLocation.current.x) + Math.abs(mouseLocation.current.pY - mouseLocation.current.y) < sensitivity) {\n            updateHovering(true);\n        } else {\n            mouseLocation.current.pX = mouseLocation.current.x;\n            mouseLocation.current.pY = mouseLocation.current.y;\n            timer.current = window.setTimeout(() => handleTick(), interval);\n        }\n      }, [updateHovering]);\n\n    const handleMouseMove = useCallback((e: MouseEvent) => {\n        mouseLocation.current.x = e.clientX;\n        mouseLocation.current.y = e.clientY;\n    }, []);\n\n    const handleMouseOver = useCallback((e: MouseEvent) => {\n        resetTimer();\n\n        if(ref.current) {\n            ref.current.addEventListener('mousemove', handleMouseMove, false);\n        }\n\n        if (!isHovering) {\n            mouseLocation.current.pX = e.clientX;\n            mouseLocation.current.pY = e.clientY;\n            timer.current = window.setTimeout(() => handleTick(), interval);\n        }\n    }, [ref, isHovering]);\n\n    const handleMouseOut = useCallback((e: MouseEvent) => {\n        resetTimer();\n\n        if(ref.current) {\n            ref.current.removeEventListener('mousemove', handleMouseMove, false);\n        }\n\n        if(isHovering) {\n            timer.current = window.setTimeout(() => handleDelayedMouseOut(), timeout);\n        }\n    }, [ref, isHovering]);\n\n    useEffect(() => {\n        if(ref.current) {\n            ref.current.addEventListener('mouseover', handleMouseOver, false);\n            ref.current.addEventListener('mouseout', handleMouseOut, false);\n        }\n\n        return () => {\n            resetTimer();\n            if(ref.current) {\n                ref.current.removeEventListener('mouseover', handleMouseOver, false);\n                ref.current.removeEventListener('mouseout', handleMouseOut, false);\n            }\n        }\n    }, [ref, handleMouseOut, handleMouseOver]);\n\n    return [isHovering];\n}","import React, { HTMLProps, ReactNode } from \"react\";\n\nexport type PopoverBodyProps = {\n    children: ReactNode\n} & HTMLProps<HTMLDivElement>;\n\nexport default function PopoverBody({children, className, ...props}: PopoverBodyProps) {\n    return (\n        <div className={`shadow-md ${className}`} {...props}>\n            {children}\n        </div>\n    );\n}","import React from \"react\";\nimport Link, { LinkProps } from \"../link/Link\";\nimport CircleFlag from \"./CircleFlag\";\n\nexport type LanguageSwitcherItemProps = {\n  locale: string;\n  slug: string;\n};\n\nexport default function LanguageSwitcherItem({\n    locale,\n    slug,\n    ...props\n}: LanguageSwitcherItemProps) {\n    const path = `/${locale.toLowerCase()}/${slug.replace(/^\\//, \"\")}`;\n\n    return (\n        <Link\n          className={`w-14 h-14 flex items-center justify-center hover:bg-slate-200 dark:hover:bg-slate-700`}\n          to={path}\n          {...props}\n        >\n          <CircleFlag countryCode={locale} className=\"w-7 h-7\" />\n        </Link>\n      );\n}","import React from \"react\";\nimport Popover, { PopoverProps } from \"../popover/Popover\";\nimport PopoverBody from \"../popover/PopoverBody\";\nimport CircleFlag from \"./CircleFlag\";\nimport LanguageSwitcherItem, { LanguageSwitcherItemProps } from './LanguageSwitcherItem';\n\nexport type LanguageSwitcherProps = {\n  activeLocale: string,\n  locales: LanguageSwitcherItemProps[];\n} & Omit<PopoverProps, 'keepDom'|'content'|'children'>;\n\nexport default function LanguageSwitcher({\n  activeLocale,\n  className = '',\n  locales,\n  ...props\n}: LanguageSwitcherProps) {\n    const localePopover = <PopoverBody className=\"bg-white dark:bg-slate-900 dark:shadow-black\">\n      { \n        locales\n          ?.sort((a,b) => a.locale.localeCompare(b.locale))\n          .map((locale) => <LanguageSwitcherItem key={locale.locale} {...locale}/>)\n      }\n    </PopoverBody>\n\n    return (\n        <Popover keepDom className={`flex ${className}`} content={localePopover} {...props}>\n          <div className=\"w-14 flex justify-center items-center cursor-pointer hover:bg-slate-800\">\n            <CircleFlag countryCode={activeLocale} className=\"w-7 h-7\" />\n          </div>\n        </Popover>\n      );\n}","import { graphql, useStaticQuery } from 'gatsby';\nimport { use } from 'i18next';\nimport { useMemo } from 'react';\n\nexport type MainMenuCategoryTree = {\n  component: 'menu.category-tree';\n  categoryId: number;\n};\n\nexport type MainMenuItem = MainMenuCategoryTree;\n\nexport default function useMainMenu(locale: string) {\n  const { allStrapiMainMenu } = useStaticQuery(graphql`\n    query {\n      allStrapiMainMenu {\n        nodes {\n          locale\n          items {\n            ... on STRAPI__COMPONENT_MENU_CATEGORY_TREE {\n              strapi_component\n              category {\n                strapi_id\n              }\n            }\n            ... on STRAPI__COMPONENT_MENU_EXTERNAL_LINK {\n              strapi_component\n              title\n              link\n            }\n          }\n        }\n      }\n    }\n  `);\n\n  return useMemo(() => {\n    if (!locale) return [];\n\n    const menu = allStrapiMainMenu.nodes.find(\n      (node: any) => node.locale.toLowerCase() === locale?.toLowerCase()\n    );\n\n    if (!menu) {\n      return [];\n    }\n\n    return menu.items;\n  }, [allStrapiMainMenu, locale]);\n}\n","import React, { HTMLProps, MouseEvent, MouseEventHandler, PropsWithoutRef, ReactNode, useCallback } from \"react\";\nimport Link, { LinkProps } from \"../link/Link\";\n\nexport type MainMenuItemProps = {\n    active?: boolean;\n    children: ReactNode;\n    to?: string;\n} & Omit<HTMLProps<HTMLAnchorElement>, 'href'|'ref'>;\n\nexport function MainMenuItem({\n    active = false,\n    children,\n    to,\n    onClick,\n    ...rest\n}: MainMenuItemProps) {\n    const className = `font-bold px-6 py-1 rounded-md ${active ? 'bg-slate-900' : '' } hover:bg-slate-900 font-medium transition-colors`;\n\n    const handleLinkClick = useCallback((evt: MouseEvent<HTMLAnchorElement>) => {\n        evt.preventDefault();\n        onClick && onClick(evt);\n    }, [onClick]);\n\n    if(to) {\n        return (\n            <Link to={to} className={className} {...rest}>{children}</Link>\n        );\n    }\n\n    return (\n        <a onClick={handleLinkClick} className={className} {...rest}>{children}</a>\n    );\n}\n\nexport default MainMenuItem;","import React from 'react';\nimport makePath from '../../../helpers/makePath';\nimport useCategoryTree from '../../../hooks/useCategoryTree';\nimport { useLocale } from '../../../hooks/useLocale';\nimport MainMenuItem from '../MainMenuItem';\n\nexport type MainMenuCategoryItemProps = {\n  categoryId: number;\n  active?: boolean;\n  onActivate?: (id: number) => void;\n};\n\nexport default function MainMenuCategoryItem({\n  categoryId,\n  active,\n  onActivate,\n}: MainMenuCategoryItemProps) {\n  const locale = useLocale();\n  const categories = useCategoryTree(locale, categoryId);\n\n  const rootCategory = categories.find((cat) => cat.strapi_id === categoryId);\n  if (!rootCategory) return null;\n  const hasChildren =\n    rootCategory.children.length + rootCategory.pages.length > 0;\n\n  if (hasChildren) {\n    return (\n      <MainMenuItem\n        to={makePath(rootCategory.locale, rootCategory.slug)}\n        active={active}\n        onFocus={() => onActivate(categoryId)}\n        onMouseEnter={() => onActivate(categoryId)}\n      >\n        {rootCategory.title}\n      </MainMenuItem>\n    );\n  } else {\n    return (\n      <MainMenuItem\n        onMouseEnter={() => onActivate(null)}\n        to={makePath(rootCategory.locale, rootCategory.slug)}\n      >\n        {rootCategory.title}\n      </MainMenuItem>\n    );\n  }\n}\n","import { useEffect, useState } from \"react\";\n\nexport default function useSSR() {\n    const [isBrowser, setIsBrowser] = useState(false);\n\n    useEffect(() => {\n        setIsBrowser(true);\n    }, []);\n\n    return isBrowser;\n}","import React, { HTMLProps, ReactNode } from 'react';\nimport ReactDOM from 'react-dom';\nimport useSSR from '../../hooks/useSSR';\n\nexport type OverlayProps = {\n  keepHeader?: boolean;\n  visible?: boolean;\n} & HTMLProps<HTMLDivElement>;\n\nexport default function Overlay({\n  keepHeader = false,\n  visible = true,\n  ...rest\n}: OverlayProps) {\n  const isBrowser = useSSR();\n\n  if (!isBrowser) {\n    return null;\n  }\n\n  return ReactDOM.createPortal(\n    <div\n      className={`fixed ${\n        keepHeader ? 'top-14 z-30' : 'top-0 z-40'\n      } inset-x-0 bottom-0 ${\n        visible\n          ? 'bg-opacity-30 backdrop-blur-md'\n          : 'bg-opacity-0 backdrop-blur-0 pointer-events-none'\n      } bg-black transform-gpu transition-all`}\n      {...rest}\n    />,\n    document.getElementById('overlay')\n  ) as unknown as JSX.Element;\n}\n","import { RefCallback, useCallback, useEffect, useState } from 'react';\n\ntype Measurements = {\n  clientOffset: {\n    x: number;\n    y: number;\n  };\n  size: {\n    width: number;\n    height: number;\n  };\n};\n\ntype MeasureOptions = {\n  withPadding?: boolean;\n  withMargin?: boolean;\n  withBorder?: boolean;\n  relativeToDocument?: boolean;\n};\n\nconst defaultOptions = {\n  withPadding: true,\n  withBorder: true,\n  withMargin: false,\n  relativeToDocument: false,\n};\n\nexport default function useMeasure<T extends HTMLElement>({\n  withPadding = true,\n  withBorder = true,\n  withMargin = false,\n  relativeToDocument = false,\n}: MeasureOptions = defaultOptions): [RefCallback<T>, Measurements] {\n  const [ref, setRef] = useState<T>(null);\n\n  const [measurements, setMeasurements] = useState<Measurements>({\n    clientOffset: { x: 0, y: 0 },\n    size: { width: 0, height: 0 },\n  });\n\n  const measure = useCallback(() => {\n    if (!ref) return;\n    const boundingRect = ref.getBoundingClientRect();\n    const computedStyles = window.getComputedStyle(ref);\n\n    const scrollX = window.scrollX;\n    const scrollY = window.scrollY;\n\n    const marginLeft = parseFloat(computedStyles.marginLeft);\n    const marginTop = parseFloat(computedStyles.marginTop);\n    const paddingLeft = parseFloat(computedStyles.paddingLeft);\n    const paddingTop = parseFloat(computedStyles.paddingTop);\n    const borderLeft = parseFloat(computedStyles.borderLeftWidth);\n    const borderTop = parseFloat(computedStyles.borderTopWidth);\n    const paddingX = paddingLeft + parseFloat(computedStyles.paddingRight);\n    const paddingY = paddingTop + parseFloat(computedStyles.paddingBottom);\n    const marginX = marginLeft + parseFloat(computedStyles.marginRight);\n    const marginY = marginTop + parseFloat(computedStyles.marginBottom);\n    const borderX = borderLeft + parseFloat(computedStyles.borderRightWidth);\n    const borderY = borderTop + parseFloat(computedStyles.borderBottomWidth);\n\n    const width =\n      boundingRect.width -\n      (!withPadding ? paddingX : 0) -\n      (!withBorder ? borderX : 0) +\n      (withMargin ? marginX : 0);\n    const height =\n      boundingRect.height -\n      (!withPadding ? paddingY : 0) -\n      (!withBorder ? borderY : 0) +\n      (withMargin ? marginY : 0);\n\n    const x =\n      boundingRect.x +\n      (relativeToDocument ? scrollX : 0) -\n      (withMargin ? marginLeft : 0) +\n      (!withPadding ? paddingLeft : 0) +\n      (!withBorder ? borderLeft : 0);\n    const y =\n      boundingRect.x +\n      (relativeToDocument ? scrollY : 0) -\n      (withMargin ? marginTop : 0) +\n      (!withPadding ? paddingTop : 0) +\n      (!withBorder ? borderTop : 0);\n\n    setMeasurements({\n      clientOffset: { x, y },\n      size: { width, height },\n    });\n  }, [ref, withBorder, withMargin, withPadding, relativeToDocument]);\n\n  const updateRef = useCallback((node) => {\n    setRef(node);\n  }, []);\n\n  useEffect(() => {\n    if (!ref) return;\n    const observer = new ResizeObserver((entries) => {\n      measure();\n    });\n    observer.observe(ref);\n\n    if (relativeToDocument) {\n      window.addEventListener('scroll', measure);\n    }\n    measure();\n\n    return () => {\n      observer.disconnect();\n      window.removeEventListener('scroll', measure);\n    };\n  }, [measure, relativeToDocument, ref]);\n\n  return [updateRef, measurements];\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    _get = Reflect.get;\n  } else {\n    _get = function _get(target, property, receiver) {\n      var base = superPropBase(target, property);\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(arguments.length < 3 ? target : receiver);\n      }\n\n      return desc.value;\n    };\n  }\n\n  return _get.apply(this, arguments);\n}","export default function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return construct(Class, arguments, getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return setPrototypeOf(Wrapper, Class);\n  };\n\n  return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nexport default function _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}","import _toConsumableArray from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nvar updateQueue = makeQueue();\n\nvar raf = function raf(fn) {\n  return schedule(fn, updateQueue);\n};\n\nvar writeQueue = makeQueue();\n\nraf.write = function (fn) {\n  return schedule(fn, writeQueue);\n};\n\nvar onStartQueue = makeQueue();\n\nraf.onStart = function (fn) {\n  return schedule(fn, onStartQueue);\n};\n\nvar onFrameQueue = makeQueue();\n\nraf.onFrame = function (fn) {\n  return schedule(fn, onFrameQueue);\n};\n\nvar onFinishQueue = makeQueue();\n\nraf.onFinish = function (fn) {\n  return schedule(fn, onFinishQueue);\n};\n\nvar timeouts = [];\n\nraf.setTimeout = function (handler, ms) {\n  var time = raf.now() + ms;\n\n  var cancel = function cancel() {\n    var i = timeouts.findIndex(function (t) {\n      return t.cancel == cancel;\n    });\n    if (~i) timeouts.splice(i, 1);\n    pendingCount -= ~i ? 1 : 0;\n  };\n\n  var timeout = {\n    time: time,\n    handler: handler,\n    cancel: cancel\n  };\n  timeouts.splice(findTimeout(time), 0, timeout);\n  pendingCount += 1;\n  start();\n  return timeout;\n};\n\nvar findTimeout = function findTimeout(time) {\n  return ~(~timeouts.findIndex(function (t) {\n    return t.time > time;\n  }) || ~timeouts.length);\n};\n\nraf.cancel = function (fn) {\n  onStartQueue.delete(fn);\n  onFrameQueue.delete(fn);\n  updateQueue.delete(fn);\n  writeQueue.delete(fn);\n  onFinishQueue.delete(fn);\n};\n\nraf.sync = function (fn) {\n  sync = true;\n  raf.batchedUpdates(fn);\n  sync = false;\n};\n\nraf.throttle = function (fn) {\n  var lastArgs;\n\n  function queuedFn() {\n    try {\n      fn.apply(void 0, _toConsumableArray(lastArgs));\n    } finally {\n      lastArgs = null;\n    }\n  }\n\n  function throttled() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    lastArgs = args;\n    raf.onStart(queuedFn);\n  }\n\n  throttled.handler = fn;\n\n  throttled.cancel = function () {\n    onStartQueue.delete(queuedFn);\n    lastArgs = null;\n  };\n\n  return throttled;\n};\n\nvar nativeRaf = typeof window != 'undefined' ? window.requestAnimationFrame : function () {};\n\nraf.use = function (impl) {\n  return nativeRaf = impl;\n};\n\nraf.now = typeof performance != 'undefined' ? function () {\n  return performance.now();\n} : Date.now;\n\nraf.batchedUpdates = function (fn) {\n  return fn();\n};\n\nraf.catch = console.error;\nraf.frameLoop = 'always';\n\nraf.advance = function () {\n  if (raf.frameLoop !== 'demand') {\n    console.warn('Cannot call the manual advancement of rafz whilst frameLoop is not set as demand');\n  } else {\n    update();\n  }\n};\n\nvar ts = -1;\nvar pendingCount = 0;\nvar sync = false;\n\nfunction schedule(fn, queue) {\n  if (sync) {\n    queue.delete(fn);\n    fn(0);\n  } else {\n    queue.add(fn);\n    start();\n  }\n}\n\nfunction start() {\n  if (ts < 0) {\n    ts = 0;\n\n    if (raf.frameLoop !== 'demand') {\n      nativeRaf(loop);\n    }\n  }\n}\n\nfunction stop() {\n  ts = -1;\n}\n\nfunction loop() {\n  if (~ts) {\n    nativeRaf(loop);\n    raf.batchedUpdates(update);\n  }\n}\n\nfunction update() {\n  var prevTs = ts;\n  ts = raf.now();\n  var count = findTimeout(ts);\n\n  if (count) {\n    eachSafely(timeouts.splice(0, count), function (t) {\n      return t.handler();\n    });\n    pendingCount -= count;\n  }\n\n  onStartQueue.flush();\n  updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n  onFrameQueue.flush();\n  writeQueue.flush();\n  onFinishQueue.flush();\n\n  if (!pendingCount) {\n    stop();\n  }\n}\n\nfunction makeQueue() {\n  var next = new Set();\n  var current = next;\n  return {\n    add: function add(fn) {\n      pendingCount += current == next && !next.has(fn) ? 1 : 0;\n      next.add(fn);\n    },\n    delete: function _delete(fn) {\n      pendingCount -= current == next && next.has(fn) ? 1 : 0;\n      return next.delete(fn);\n    },\n    flush: function flush(arg) {\n      if (current.size) {\n        next = new Set();\n        pendingCount -= current.size;\n        eachSafely(current, function (fn) {\n          return fn(arg) && next.add(fn);\n        });\n        pendingCount += next.size;\n        current = next;\n      }\n    }\n  };\n}\n\nfunction eachSafely(values, each) {\n  values.forEach(function (value) {\n    try {\n      each(value);\n    } catch (e) {\n      raf.catch(e);\n    }\n  });\n}\n\nvar __raf = {\n  count: function count() {\n    return pendingCount;\n  },\n  isRunning: function isRunning() {\n    return ts >= 0;\n  },\n  clear: function clear() {\n    ts = -1;\n    timeouts = [];\n    onStartQueue = makeQueue();\n    updateQueue = makeQueue();\n    onFrameQueue = makeQueue();\n    writeQueue = makeQueue();\n    onFinishQueue = makeQueue();\n    pendingCount = 0;\n  }\n};\nexport { __raf, raf };","import _slicedToArray from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _createClass from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _classCallCheck from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport { raf } from '@react-spring/rafz';\nexport { raf } from '@react-spring/rafz';\nimport * as React from 'react';\nimport { useRef, useState, useEffect } from 'react';\n\nfunction noop() {}\n\nvar defineHidden = function defineHidden(obj, key, value) {\n  return Object.defineProperty(obj, key, {\n    value: value,\n    writable: true,\n    configurable: true\n  });\n};\n\nvar is = {\n  arr: Array.isArray,\n  obj: function obj(a) {\n    return !!a && a.constructor.name === 'Object';\n  },\n  fun: function fun(a) {\n    return typeof a === 'function';\n  },\n  str: function str(a) {\n    return typeof a === 'string';\n  },\n  num: function num(a) {\n    return typeof a === 'number';\n  },\n  und: function und(a) {\n    return a === undefined;\n  }\n};\n\nfunction isEqual(a, b) {\n  if (is.arr(a)) {\n    if (!is.arr(b) || a.length !== b.length) return false;\n\n    for (var i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n\n    return true;\n  }\n\n  return a === b;\n}\n\nvar each = function each(obj, fn) {\n  return obj.forEach(fn);\n};\n\nfunction eachProp(obj, fn, ctx) {\n  if (is.arr(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      fn.call(ctx, obj[i], \"\".concat(i));\n    }\n\n    return;\n  }\n\n  for (var key in obj) {\n    if (obj.hasOwnProperty(key)) {\n      fn.call(ctx, obj[key], key);\n    }\n  }\n}\n\nvar toArray = function toArray(a) {\n  return is.und(a) ? [] : is.arr(a) ? a : [a];\n};\n\nfunction flush(queue, iterator) {\n  if (queue.size) {\n    var items = Array.from(queue);\n    queue.clear();\n    each(items, iterator);\n  }\n}\n\nvar flushCalls = function flushCalls(queue) {\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  return flush(queue, function (fn) {\n    return fn.apply(void 0, args);\n  });\n};\n\nvar isSSR = function isSSR() {\n  return typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n};\n\nvar createStringInterpolator$1;\nvar to;\nvar colors$1 = null;\nvar skipAnimation = false;\nvar willAdvance = noop;\n\nvar assign = function assign(globals) {\n  if (globals.to) to = globals.to;\n  if (globals.now) raf.now = globals.now;\n  if (globals.colors !== undefined) colors$1 = globals.colors;\n  if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation;\n  if (globals.createStringInterpolator) createStringInterpolator$1 = globals.createStringInterpolator;\n  if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);\n  if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;\n  if (globals.willAdvance) willAdvance = globals.willAdvance;\n  if (globals.frameLoop) raf.frameLoop = globals.frameLoop;\n};\n\nvar globals = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n\n  get createStringInterpolator() {\n    return createStringInterpolator$1;\n  },\n\n  get to() {\n    return to;\n  },\n\n  get colors() {\n    return colors$1;\n  },\n\n  get skipAnimation() {\n    return skipAnimation;\n  },\n\n  get willAdvance() {\n    return willAdvance;\n  },\n\n  assign: assign\n});\nvar startQueue = new Set();\nvar currentFrame = [];\nvar prevFrame = [];\nvar priority = 0;\nvar frameLoop = {\n  get idle() {\n    return !startQueue.size && !currentFrame.length;\n  },\n\n  start: function start(animation) {\n    if (priority > animation.priority) {\n      startQueue.add(animation);\n      raf.onStart(flushStartQueue);\n    } else {\n      startSafely(animation);\n      raf(advance);\n    }\n  },\n  advance: advance,\n  sort: function sort(animation) {\n    if (priority) {\n      raf.onFrame(function () {\n        return frameLoop.sort(animation);\n      });\n    } else {\n      var prevIndex = currentFrame.indexOf(animation);\n\n      if (~prevIndex) {\n        currentFrame.splice(prevIndex, 1);\n        startUnsafely(animation);\n      }\n    }\n  },\n  clear: function clear() {\n    currentFrame = [];\n    startQueue.clear();\n  }\n};\n\nfunction flushStartQueue() {\n  startQueue.forEach(startSafely);\n  startQueue.clear();\n  raf(advance);\n}\n\nfunction startSafely(animation) {\n  if (!currentFrame.includes(animation)) startUnsafely(animation);\n}\n\nfunction startUnsafely(animation) {\n  currentFrame.splice(findIndex(currentFrame, function (other) {\n    return other.priority > animation.priority;\n  }), 0, animation);\n}\n\nfunction advance(dt) {\n  var nextFrame = prevFrame;\n\n  for (var i = 0; i < currentFrame.length; i++) {\n    var animation = currentFrame[i];\n    priority = animation.priority;\n\n    if (!animation.idle) {\n      willAdvance(animation);\n      animation.advance(dt);\n\n      if (!animation.idle) {\n        nextFrame.push(animation);\n      }\n    }\n  }\n\n  priority = 0;\n  prevFrame = currentFrame;\n  prevFrame.length = 0;\n  currentFrame = nextFrame;\n  return currentFrame.length > 0;\n}\n\nfunction findIndex(arr, test) {\n  var index = arr.findIndex(test);\n  return index < 0 ? arr.length : index;\n}\n\nvar colors = {\n  transparent: 0x00000000,\n  aliceblue: 0xf0f8ffff,\n  antiquewhite: 0xfaebd7ff,\n  aqua: 0x00ffffff,\n  aquamarine: 0x7fffd4ff,\n  azure: 0xf0ffffff,\n  beige: 0xf5f5dcff,\n  bisque: 0xffe4c4ff,\n  black: 0x000000ff,\n  blanchedalmond: 0xffebcdff,\n  blue: 0x0000ffff,\n  blueviolet: 0x8a2be2ff,\n  brown: 0xa52a2aff,\n  burlywood: 0xdeb887ff,\n  burntsienna: 0xea7e5dff,\n  cadetblue: 0x5f9ea0ff,\n  chartreuse: 0x7fff00ff,\n  chocolate: 0xd2691eff,\n  coral: 0xff7f50ff,\n  cornflowerblue: 0x6495edff,\n  cornsilk: 0xfff8dcff,\n  crimson: 0xdc143cff,\n  cyan: 0x00ffffff,\n  darkblue: 0x00008bff,\n  darkcyan: 0x008b8bff,\n  darkgoldenrod: 0xb8860bff,\n  darkgray: 0xa9a9a9ff,\n  darkgreen: 0x006400ff,\n  darkgrey: 0xa9a9a9ff,\n  darkkhaki: 0xbdb76bff,\n  darkmagenta: 0x8b008bff,\n  darkolivegreen: 0x556b2fff,\n  darkorange: 0xff8c00ff,\n  darkorchid: 0x9932ccff,\n  darkred: 0x8b0000ff,\n  darksalmon: 0xe9967aff,\n  darkseagreen: 0x8fbc8fff,\n  darkslateblue: 0x483d8bff,\n  darkslategray: 0x2f4f4fff,\n  darkslategrey: 0x2f4f4fff,\n  darkturquoise: 0x00ced1ff,\n  darkviolet: 0x9400d3ff,\n  deeppink: 0xff1493ff,\n  deepskyblue: 0x00bfffff,\n  dimgray: 0x696969ff,\n  dimgrey: 0x696969ff,\n  dodgerblue: 0x1e90ffff,\n  firebrick: 0xb22222ff,\n  floralwhite: 0xfffaf0ff,\n  forestgreen: 0x228b22ff,\n  fuchsia: 0xff00ffff,\n  gainsboro: 0xdcdcdcff,\n  ghostwhite: 0xf8f8ffff,\n  gold: 0xffd700ff,\n  goldenrod: 0xdaa520ff,\n  gray: 0x808080ff,\n  green: 0x008000ff,\n  greenyellow: 0xadff2fff,\n  grey: 0x808080ff,\n  honeydew: 0xf0fff0ff,\n  hotpink: 0xff69b4ff,\n  indianred: 0xcd5c5cff,\n  indigo: 0x4b0082ff,\n  ivory: 0xfffff0ff,\n  khaki: 0xf0e68cff,\n  lavender: 0xe6e6faff,\n  lavenderblush: 0xfff0f5ff,\n  lawngreen: 0x7cfc00ff,\n  lemonchiffon: 0xfffacdff,\n  lightblue: 0xadd8e6ff,\n  lightcoral: 0xf08080ff,\n  lightcyan: 0xe0ffffff,\n  lightgoldenrodyellow: 0xfafad2ff,\n  lightgray: 0xd3d3d3ff,\n  lightgreen: 0x90ee90ff,\n  lightgrey: 0xd3d3d3ff,\n  lightpink: 0xffb6c1ff,\n  lightsalmon: 0xffa07aff,\n  lightseagreen: 0x20b2aaff,\n  lightskyblue: 0x87cefaff,\n  lightslategray: 0x778899ff,\n  lightslategrey: 0x778899ff,\n  lightsteelblue: 0xb0c4deff,\n  lightyellow: 0xffffe0ff,\n  lime: 0x00ff00ff,\n  limegreen: 0x32cd32ff,\n  linen: 0xfaf0e6ff,\n  magenta: 0xff00ffff,\n  maroon: 0x800000ff,\n  mediumaquamarine: 0x66cdaaff,\n  mediumblue: 0x0000cdff,\n  mediumorchid: 0xba55d3ff,\n  mediumpurple: 0x9370dbff,\n  mediumseagreen: 0x3cb371ff,\n  mediumslateblue: 0x7b68eeff,\n  mediumspringgreen: 0x00fa9aff,\n  mediumturquoise: 0x48d1ccff,\n  mediumvioletred: 0xc71585ff,\n  midnightblue: 0x191970ff,\n  mintcream: 0xf5fffaff,\n  mistyrose: 0xffe4e1ff,\n  moccasin: 0xffe4b5ff,\n  navajowhite: 0xffdeadff,\n  navy: 0x000080ff,\n  oldlace: 0xfdf5e6ff,\n  olive: 0x808000ff,\n  olivedrab: 0x6b8e23ff,\n  orange: 0xffa500ff,\n  orangered: 0xff4500ff,\n  orchid: 0xda70d6ff,\n  palegoldenrod: 0xeee8aaff,\n  palegreen: 0x98fb98ff,\n  paleturquoise: 0xafeeeeff,\n  palevioletred: 0xdb7093ff,\n  papayawhip: 0xffefd5ff,\n  peachpuff: 0xffdab9ff,\n  peru: 0xcd853fff,\n  pink: 0xffc0cbff,\n  plum: 0xdda0ddff,\n  powderblue: 0xb0e0e6ff,\n  purple: 0x800080ff,\n  rebeccapurple: 0x663399ff,\n  red: 0xff0000ff,\n  rosybrown: 0xbc8f8fff,\n  royalblue: 0x4169e1ff,\n  saddlebrown: 0x8b4513ff,\n  salmon: 0xfa8072ff,\n  sandybrown: 0xf4a460ff,\n  seagreen: 0x2e8b57ff,\n  seashell: 0xfff5eeff,\n  sienna: 0xa0522dff,\n  silver: 0xc0c0c0ff,\n  skyblue: 0x87ceebff,\n  slateblue: 0x6a5acdff,\n  slategray: 0x708090ff,\n  slategrey: 0x708090ff,\n  snow: 0xfffafaff,\n  springgreen: 0x00ff7fff,\n  steelblue: 0x4682b4ff,\n  tan: 0xd2b48cff,\n  teal: 0x008080ff,\n  thistle: 0xd8bfd8ff,\n  tomato: 0xff6347ff,\n  turquoise: 0x40e0d0ff,\n  violet: 0xee82eeff,\n  wheat: 0xf5deb3ff,\n  white: 0xffffffff,\n  whitesmoke: 0xf5f5f5ff,\n  yellow: 0xffff00ff,\n  yellowgreen: 0x9acd32ff\n};\nvar NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nvar PERCENTAGE = NUMBER + '%';\n\nfunction call() {\n  for (var _len2 = arguments.length, parts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    parts[_key2] = arguments[_key2];\n  }\n\n  return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nvar rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nvar rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nvar hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nvar hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nvar hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nvar hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nvar hex6 = /^#([0-9a-fA-F]{6})$/;\nvar hex8 = /^#([0-9a-fA-F]{8})$/;\n\nfunction normalizeColor(color) {\n  var match;\n\n  if (typeof color === 'number') {\n    return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n  }\n\n  if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n\n  if (colors$1 && colors$1[color] !== undefined) {\n    return colors$1[color];\n  }\n\n  if (match = rgb.exec(color)) {\n    return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0;\n  }\n\n  if (match = rgba.exec(color)) {\n    return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n  }\n\n  if (match = hex3.exec(color)) {\n    return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0;\n  }\n\n  if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n  if (match = hex4.exec(color)) {\n    return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n  }\n\n  if (match = hsl.exec(color)) {\n    return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0;\n  }\n\n  if (match = hsla.exec(color)) {\n    return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n  }\n\n  return null;\n}\n\nfunction hue2rgb(p, q, t) {\n  if (t < 0) t += 1;\n  if (t > 1) t -= 1;\n  if (t < 1 / 6) return p + (q - p) * 6 * t;\n  if (t < 1 / 2) return q;\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\n\nfunction hslToRgb(h, s, l) {\n  var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n  var p = 2 * l - q;\n  var r = hue2rgb(p, q, h + 1 / 3);\n  var g = hue2rgb(p, q, h);\n  var b = hue2rgb(p, q, h - 1 / 3);\n  return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n  var int = parseInt(str, 10);\n  if (int < 0) return 0;\n  if (int > 255) return 255;\n  return int;\n}\n\nfunction parse360(str) {\n  var int = parseFloat(str);\n  return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n  var num = parseFloat(str);\n  if (num < 0) return 0;\n  if (num > 1) return 255;\n  return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n  var int = parseFloat(str);\n  if (int < 0) return 0;\n  if (int > 100) return 1;\n  return int / 100;\n}\n\nfunction colorToRgba(input) {\n  var int32Color = normalizeColor(input);\n  if (int32Color === null) return input;\n  int32Color = int32Color || 0;\n  var r = (int32Color & 0xff000000) >>> 24;\n  var g = (int32Color & 0x00ff0000) >>> 16;\n  var b = (int32Color & 0x0000ff00) >>> 8;\n  var a = (int32Color & 0x000000ff) / 255;\n  return \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(a, \")\");\n}\n\nvar createInterpolator = function createInterpolator(range, output, extrapolate) {\n  if (is.fun(range)) {\n    return range;\n  }\n\n  if (is.arr(range)) {\n    return createInterpolator({\n      range: range,\n      output: output,\n      extrapolate: extrapolate\n    });\n  }\n\n  if (is.str(range.output[0])) {\n    return createStringInterpolator$1(range);\n  }\n\n  var config = range;\n  var outputRange = config.output;\n  var inputRange = config.range || [0, 1];\n  var extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n  var extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n  var easing = config.easing || function (t) {\n    return t;\n  };\n\n  return function (input) {\n    var range = findRange(input, inputRange);\n    return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n  };\n};\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n  var result = map ? map(input) : input;\n\n  if (result < inputMin) {\n    if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n  }\n\n  if (result > inputMax) {\n    if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n  }\n\n  if (outputMin === outputMax) return outputMin;\n  if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;\n  if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);\n  result = easing(result);\n  if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n  return result;\n}\n\nfunction findRange(input, inputRange) {\n  for (var i = 1; i < inputRange.length - 1; ++i) {\n    if (inputRange[i] >= input) break;\n  }\n\n  return i - 1;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar $get = Symbol.for('FluidValue.get');\nvar $observers = Symbol.for('FluidValue.observers');\n\nvar hasFluidValue = function hasFluidValue(arg) {\n  return Boolean(arg && arg[$get]);\n};\n\nvar getFluidValue = function getFluidValue(arg) {\n  return arg && arg[$get] ? arg[$get]() : arg;\n};\n\nvar getFluidObservers = function getFluidObservers(target) {\n  return target[$observers] || null;\n};\n\nfunction callFluidObserver(observer, event) {\n  if (observer.eventObserved) {\n    observer.eventObserved(event);\n  } else {\n    observer(event);\n  }\n}\n\nfunction callFluidObservers(target, event) {\n  var observers = target[$observers];\n\n  if (observers) {\n    observers.forEach(function (observer) {\n      callFluidObserver(observer, event);\n    });\n  }\n}\n\nvar FluidValue = /*#__PURE__*/_createClass(function FluidValue(get) {\n  _classCallCheck(this, FluidValue);\n\n  this[$get] = void 0;\n  this[$observers] = void 0;\n\n  if (!get && !(get = this.get)) {\n    throw Error('Unknown getter');\n  }\n\n  setFluidGetter(this, get);\n});\n\nvar setFluidGetter = function setFluidGetter(target, get) {\n  return setHidden(target, $get, get);\n};\n\nfunction addFluidObserver(target, observer) {\n  if (target[$get]) {\n    var observers = target[$observers];\n\n    if (!observers) {\n      setHidden(target, $observers, observers = new Set());\n    }\n\n    if (!observers.has(observer)) {\n      observers.add(observer);\n\n      if (target.observerAdded) {\n        target.observerAdded(observers.size, observer);\n      }\n    }\n  }\n\n  return observer;\n}\n\nfunction removeFluidObserver(target, observer) {\n  var observers = target[$observers];\n\n  if (observers && observers.has(observer)) {\n    var count = observers.size - 1;\n\n    if (count) {\n      observers.delete(observer);\n    } else {\n      target[$observers] = null;\n    }\n\n    if (target.observerRemoved) {\n      target.observerRemoved(count, observer);\n    }\n  }\n}\n\nvar setHidden = function setHidden(target, key, value) {\n  return Object.defineProperty(target, key, {\n    value: value,\n    writable: true,\n    configurable: true\n  });\n};\n\nvar numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nvar colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nvar unitRegex = new RegExp(\"(\".concat(numberRegex.source, \")(%|[a-z]+)\"), 'i');\nvar rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\nvar cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\nvar variableToRgba = function variableToRgba(input) {\n  var _parseCSSVariable = parseCSSVariable(input),\n      _parseCSSVariable2 = _slicedToArray(_parseCSSVariable, 2),\n      token = _parseCSSVariable2[0],\n      fallback = _parseCSSVariable2[1];\n\n  if (!token || isSSR()) {\n    return input;\n  }\n\n  var value = window.getComputedStyle(document.documentElement).getPropertyValue(token);\n\n  if (value) {\n    return value.trim();\n  } else if (fallback && fallback.startsWith('--')) {\n    var _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);\n\n    if (_value) {\n      return _value;\n    } else {\n      return input;\n    }\n  } else if (fallback && cssVariableRegex.test(fallback)) {\n    return variableToRgba(fallback);\n  } else if (fallback) {\n    return fallback;\n  }\n\n  return input;\n};\n\nvar parseCSSVariable = function parseCSSVariable(current) {\n  var match = cssVariableRegex.exec(current);\n  if (!match) return [,];\n\n  var _match = _slicedToArray(match, 3),\n      token = _match[1],\n      fallback = _match[2];\n\n  return [token, fallback];\n};\n\nvar namedColorRegex;\n\nvar rgbaRound = function rgbaRound(_, p1, p2, p3, p4) {\n  return \"rgba(\".concat(Math.round(p1), \", \").concat(Math.round(p2), \", \").concat(Math.round(p3), \", \").concat(p4, \")\");\n};\n\nvar createStringInterpolator = function createStringInterpolator(config) {\n  if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(\"(\".concat(Object.keys(colors$1).join('|'), \")(?!\\\\w)\"), 'g') : /^\\b$/;\n  var output = config.output.map(function (value) {\n    return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);\n  });\n  var keyframes = output.map(function (value) {\n    return value.match(numberRegex).map(Number);\n  });\n  var outputRanges = keyframes[0].map(function (_, i) {\n    return keyframes.map(function (values) {\n      if (!(i in values)) {\n        throw Error('The arity of each \"output\" value must be equal');\n      }\n\n      return values[i];\n    });\n  });\n  var interpolators = outputRanges.map(function (output) {\n    return createInterpolator(_extends({}, config, {\n      output: output\n    }));\n  });\n  return function (input) {\n    var _output$find;\n\n    var missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find(function (value) {\n      return unitRegex.test(value);\n    })) == null ? void 0 : _output$find.replace(numberRegex, ''));\n    var i = 0;\n    return output[0].replace(numberRegex, function () {\n      return \"\".concat(interpolators[i++](input)).concat(missingUnit || '');\n    }).replace(rgbaRegex, rgbaRound);\n  };\n};\n\nvar prefix = 'react-spring: ';\n\nvar once = function once(fn) {\n  var func = fn;\n  var called = false;\n\n  if (typeof func != 'function') {\n    throw new TypeError(\"\".concat(prefix, \"once requires a function parameter\"));\n  }\n\n  return function () {\n    if (!called) {\n      func.apply(void 0, arguments);\n      called = true;\n    }\n  };\n};\n\nvar warnInterpolate = once(console.warn);\n\nfunction deprecateInterpolate() {\n  warnInterpolate(\"\".concat(prefix, \"The \\\"interpolate\\\" function is deprecated in v9 (use \\\"to\\\" instead)\"));\n}\n\nvar warnDirectCall = once(console.warn);\n\nfunction deprecateDirectCall() {\n  warnDirectCall(\"\".concat(prefix, \"Directly calling start instead of using the api object is deprecated in v9 (use \\\".start\\\" instead), this will be removed in later 0.X.0 versions\"));\n}\n\nfunction isAnimatedString(value) {\n  return is.str(value) && (value[0] == '#' || /\\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {}));\n}\n\nvar useLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;\n\nvar useIsMounted = function useIsMounted() {\n  var isMounted = useRef(false);\n  useLayoutEffect(function () {\n    isMounted.current = true;\n    return function () {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n};\n\nfunction useForceUpdate() {\n  var update = useState()[1];\n  var isMounted = useIsMounted();\n  return function () {\n    if (isMounted.current) {\n      update(Math.random());\n    }\n  };\n}\n\nfunction useMemoOne(getResult, inputs) {\n  var _useState = useState(function () {\n    return {\n      inputs: inputs,\n      result: getResult()\n    };\n  }),\n      _useState2 = _slicedToArray(_useState, 1),\n      initial = _useState2[0];\n\n  var committed = useRef();\n  var prevCache = committed.current;\n  var cache = prevCache;\n\n  if (cache) {\n    var useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));\n\n    if (!useCache) {\n      cache = {\n        inputs: inputs,\n        result: getResult()\n      };\n    }\n  } else {\n    cache = initial;\n  }\n\n  useEffect(function () {\n    committed.current = cache;\n\n    if (prevCache == initial) {\n      initial.inputs = initial.result = undefined;\n    }\n  }, [cache]);\n  return cache.result;\n}\n\nfunction areInputsEqual(next, prev) {\n  if (next.length !== prev.length) {\n    return false;\n  }\n\n  for (var i = 0; i < next.length; i++) {\n    if (next[i] !== prev[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nvar useOnce = function useOnce(effect) {\n  return useEffect(effect, emptyDeps);\n};\n\nvar emptyDeps = [];\n\nfunction usePrev(value) {\n  var prevRef = useRef();\n  useEffect(function () {\n    prevRef.current = value;\n  });\n  return prevRef.current;\n}\n\nexport { FluidValue, globals as Globals, addFluidObserver, callFluidObserver, callFluidObservers, colorToRgba, colors, createInterpolator, createStringInterpolator, defineHidden, deprecateDirectCall, deprecateInterpolate, each, eachProp, flush, flushCalls, frameLoop, getFluidObservers, getFluidValue, hasFluidValue, hex3, hex4, hex6, hex8, hsl, hsla, is, isAnimatedString, isEqual, isSSR, noop, removeFluidObserver, rgb, rgba, setFluidGetter, toArray, useForceUpdate, useLayoutEffect, useMemoOne, useOnce, usePrev };","import _slicedToArray from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _get from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _classCallCheck from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _createClass from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/createClass.js\";\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 _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\nimport { defineHidden, is, createInterpolator, eachProp, hasFluidValue, getFluidValue, each, isAnimatedString, useForceUpdate, useLayoutEffect, addFluidObserver, removeFluidObserver, raf, useOnce } from '@react-spring/shared';\nimport * as React from 'react';\nimport { forwardRef, useRef, useCallback, useEffect } from 'react';\nvar $node = Symbol.for('Animated:node');\n\nvar isAnimated = function isAnimated(value) {\n  return !!value && value[$node] === value;\n};\n\nvar getAnimated = function getAnimated(owner) {\n  return owner && owner[$node];\n};\n\nvar setAnimated = function setAnimated(owner, node) {\n  return defineHidden(owner, $node, node);\n};\n\nvar getPayload = function getPayload(owner) {\n  return owner && owner[$node] && owner[$node].getPayload();\n};\n\nvar Animated = /*#__PURE__*/function () {\n  function Animated() {\n    _classCallCheck(this, Animated);\n\n    this.payload = void 0;\n    setAnimated(this, this);\n  }\n\n  _createClass(Animated, [{\n    key: \"getPayload\",\n    value: function getPayload() {\n      return this.payload || [];\n    }\n  }]);\n\n  return Animated;\n}();\n\nvar AnimatedValue = /*#__PURE__*/function (_Animated) {\n  _inherits(AnimatedValue, _Animated);\n\n  var _super = _createSuper(AnimatedValue);\n\n  function AnimatedValue(_value) {\n    var _this;\n\n    _classCallCheck(this, AnimatedValue);\n\n    _this = _super.call(this);\n    _this.done = true;\n    _this.elapsedTime = void 0;\n    _this.lastPosition = void 0;\n    _this.lastVelocity = void 0;\n    _this.v0 = void 0;\n    _this.durationProgress = 0;\n    _this._value = _value;\n\n    if (is.num(_this._value)) {\n      _this.lastPosition = _this._value;\n    }\n\n    return _this;\n  }\n\n  _createClass(AnimatedValue, [{\n    key: \"getPayload\",\n    value: function getPayload() {\n      return [this];\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue() {\n      return this._value;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(value, step) {\n      if (is.num(value)) {\n        this.lastPosition = value;\n\n        if (step) {\n          value = Math.round(value / step) * step;\n\n          if (this.done) {\n            this.lastPosition = value;\n          }\n        }\n      }\n\n      if (this._value === value) {\n        return false;\n      }\n\n      this._value = value;\n      return true;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      var done = this.done;\n      this.done = false;\n\n      if (is.num(this._value)) {\n        this.elapsedTime = 0;\n        this.durationProgress = 0;\n        this.lastPosition = this._value;\n        if (done) this.lastVelocity = null;\n        this.v0 = null;\n      }\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      return new AnimatedValue(value);\n    }\n  }]);\n\n  return AnimatedValue;\n}(Animated);\n\nvar AnimatedString = /*#__PURE__*/function (_AnimatedValue) {\n  _inherits(AnimatedString, _AnimatedValue);\n\n  var _super2 = _createSuper(AnimatedString);\n\n  function AnimatedString(value) {\n    var _this2;\n\n    _classCallCheck(this, AnimatedString);\n\n    _this2 = _super2.call(this, 0);\n    _this2._string = null;\n    _this2._toString = void 0;\n    _this2._toString = createInterpolator({\n      output: [value, value]\n    });\n    return _this2;\n  }\n\n  _createClass(AnimatedString, [{\n    key: \"getValue\",\n    value: function getValue() {\n      var value = this._string;\n      return value == null ? this._string = this._toString(this._value) : value;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(value) {\n      if (is.str(value)) {\n        if (value == this._string) {\n          return false;\n        }\n\n        this._string = value;\n        this._value = 1;\n      } else if (_get(_getPrototypeOf(AnimatedString.prototype), \"setValue\", this).call(this, value)) {\n        this._string = null;\n      } else {\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset(goal) {\n      if (goal) {\n        this._toString = createInterpolator({\n          output: [this.getValue(), goal]\n        });\n      }\n\n      this._value = 0;\n\n      _get(_getPrototypeOf(AnimatedString.prototype), \"reset\", this).call(this);\n    }\n  }], [{\n    key: \"create\",\n    value: function create(value) {\n      return new AnimatedString(value);\n    }\n  }]);\n\n  return AnimatedString;\n}(AnimatedValue);\n\nvar TreeContext = {\n  dependencies: null\n};\n\nvar AnimatedObject = /*#__PURE__*/function (_Animated2) {\n  _inherits(AnimatedObject, _Animated2);\n\n  var _super3 = _createSuper(AnimatedObject);\n\n  function AnimatedObject(source) {\n    var _this3;\n\n    _classCallCheck(this, AnimatedObject);\n\n    _this3 = _super3.call(this);\n    _this3.source = source;\n\n    _this3.setValue(source);\n\n    return _this3;\n  }\n\n  _createClass(AnimatedObject, [{\n    key: \"getValue\",\n    value: function getValue(animated) {\n      var values = {};\n      eachProp(this.source, function (source, key) {\n        if (isAnimated(source)) {\n          values[key] = source.getValue(animated);\n        } else if (hasFluidValue(source)) {\n          values[key] = getFluidValue(source);\n        } else if (!animated) {\n          values[key] = source;\n        }\n      });\n      return values;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(source) {\n      this.source = source;\n      this.payload = this._makePayload(source);\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this.payload) {\n        each(this.payload, function (node) {\n          return node.reset();\n        });\n      }\n    }\n  }, {\n    key: \"_makePayload\",\n    value: function _makePayload(source) {\n      if (source) {\n        var payload = new Set();\n        eachProp(source, this._addToPayload, payload);\n        return Array.from(payload);\n      }\n    }\n  }, {\n    key: \"_addToPayload\",\n    value: function _addToPayload(source) {\n      var _this4 = this;\n\n      if (TreeContext.dependencies && hasFluidValue(source)) {\n        TreeContext.dependencies.add(source);\n      }\n\n      var payload = getPayload(source);\n\n      if (payload) {\n        each(payload, function (node) {\n          return _this4.add(node);\n        });\n      }\n    }\n  }]);\n\n  return AnimatedObject;\n}(Animated);\n\nvar AnimatedArray = /*#__PURE__*/function (_AnimatedObject) {\n  _inherits(AnimatedArray, _AnimatedObject);\n\n  var _super4 = _createSuper(AnimatedArray);\n\n  function AnimatedArray(source) {\n    _classCallCheck(this, AnimatedArray);\n\n    return _super4.call(this, source);\n  }\n\n  _createClass(AnimatedArray, [{\n    key: \"getValue\",\n    value: function getValue() {\n      return this.source.map(function (node) {\n        return node.getValue();\n      });\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(source) {\n      var payload = this.getPayload();\n\n      if (source.length == payload.length) {\n        return payload.map(function (node, i) {\n          return node.setValue(source[i]);\n        }).some(Boolean);\n      }\n\n      _get(_getPrototypeOf(AnimatedArray.prototype), \"setValue\", this).call(this, source.map(makeAnimated));\n\n      return true;\n    }\n  }], [{\n    key: \"create\",\n    value: function create(source) {\n      return new AnimatedArray(source);\n    }\n  }]);\n\n  return AnimatedArray;\n}(AnimatedObject);\n\nfunction makeAnimated(value) {\n  var nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n  return nodeType.create(value);\n}\n\nfunction getAnimatedType(value) {\n  var parentNode = getAnimated(value);\n  return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar withAnimated = function withAnimated(Component, host) {\n  var hasInstance = !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;\n  return forwardRef(function (givenProps, givenRef) {\n    var instanceRef = useRef(null);\n    var ref = hasInstance && useCallback(function (value) {\n      instanceRef.current = updateRef(givenRef, value);\n    }, [givenRef]);\n\n    var _getAnimatedState = getAnimatedState(givenProps, host),\n        _getAnimatedState2 = _slicedToArray(_getAnimatedState, 2),\n        props = _getAnimatedState2[0],\n        deps = _getAnimatedState2[1];\n\n    var forceUpdate = useForceUpdate();\n\n    var callback = function callback() {\n      var instance = instanceRef.current;\n\n      if (hasInstance && !instance) {\n        return;\n      }\n\n      var didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n\n      if (didUpdate === false) {\n        forceUpdate();\n      }\n    };\n\n    var observer = new PropsObserver(callback, deps);\n    var observerRef = useRef();\n    useLayoutEffect(function () {\n      observerRef.current = observer;\n      each(deps, function (dep) {\n        return addFluidObserver(dep, observer);\n      });\n      return function () {\n        if (observerRef.current) {\n          each(observerRef.current.deps, function (dep) {\n            return removeFluidObserver(dep, observerRef.current);\n          });\n          raf.cancel(observerRef.current.update);\n        }\n      };\n    });\n    useEffect(callback, []);\n    useOnce(function () {\n      return function () {\n        var observer = observerRef.current;\n        each(observer.deps, function (dep) {\n          return removeFluidObserver(dep, observer);\n        });\n      };\n    });\n    var usedProps = host.getComponentProps(props.getValue());\n    return React.createElement(Component, _extends({}, usedProps, {\n      ref: ref\n    }));\n  });\n};\n\nvar PropsObserver = /*#__PURE__*/function () {\n  function PropsObserver(update, deps) {\n    _classCallCheck(this, PropsObserver);\n\n    this.update = update;\n    this.deps = deps;\n  }\n\n  _createClass(PropsObserver, [{\n    key: \"eventObserved\",\n    value: function eventObserved(event) {\n      if (event.type == 'change') {\n        raf.write(this.update);\n      }\n    }\n  }]);\n\n  return PropsObserver;\n}();\n\nfunction getAnimatedState(props, host) {\n  var dependencies = new Set();\n  TreeContext.dependencies = dependencies;\n  if (props.style) props = _extends({}, props, {\n    style: host.createAnimatedStyle(props.style)\n  });\n  props = new AnimatedObject(props);\n  TreeContext.dependencies = null;\n  return [props, dependencies];\n}\n\nfunction updateRef(ref, value) {\n  if (ref) {\n    if (is.fun(ref)) ref(value);else ref.current = value;\n  }\n\n  return value;\n}\n\nvar cacheKey = Symbol.for('AnimatedComponent');\n\nvar createHost = function createHost(components) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      _ref$applyAnimatedVal = _ref.applyAnimatedValues,\n      _applyAnimatedValues = _ref$applyAnimatedVal === void 0 ? function () {\n    return false;\n  } : _ref$applyAnimatedVal,\n      _ref$createAnimatedSt = _ref.createAnimatedStyle,\n      _createAnimatedStyle = _ref$createAnimatedSt === void 0 ? function (style) {\n    return new AnimatedObject(style);\n  } : _ref$createAnimatedSt,\n      _ref$getComponentProp = _ref.getComponentProps,\n      _getComponentProps = _ref$getComponentProp === void 0 ? function (props) {\n    return props;\n  } : _ref$getComponentProp;\n\n  var hostConfig = {\n    applyAnimatedValues: _applyAnimatedValues,\n    createAnimatedStyle: _createAnimatedStyle,\n    getComponentProps: _getComponentProps\n  };\n\n  var animated = function animated(Component) {\n    var displayName = getDisplayName(Component) || 'Anonymous';\n\n    if (is.str(Component)) {\n      Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n    } else {\n      Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n    }\n\n    Component.displayName = \"Animated(\".concat(displayName, \")\");\n    return Component;\n  };\n\n  eachProp(components, function (Component, key) {\n    if (is.arr(components)) {\n      key = getDisplayName(Component);\n    }\n\n    animated[key] = animated(Component);\n  });\n  return {\n    animated: animated\n  };\n};\n\nvar getDisplayName = function getDisplayName(arg) {\n  return is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;\n};\n\nexport { Animated, AnimatedArray, AnimatedObject, AnimatedString, AnimatedValue, createHost, getAnimated, getAnimatedType, getPayload, isAnimated, setAnimated };","import _assertThisInitialized from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\";\nimport _toConsumableArray from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";\nimport _slicedToArray from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _get from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/get.js\";\nimport _inherits from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\nimport _wrapNativeSuper from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js\";\nimport _asyncToGenerator from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _createClass from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _classCallCheck from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\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 _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\nimport _regeneratorRuntime from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/regenerator/index.js\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\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 _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\nimport { eachProp, is, toArray, isAnimatedString, Globals, getFluidValue, useLayoutEffect, each, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction callProp(value) {\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  return is.fun(value) ? value.apply(void 0, args) : value;\n}\n\nvar matchProp = function matchProp(value, key) {\n  return value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\n};\n\nvar resolveProp = function resolveProp(prop, key) {\n  return is.obj(prop) ? key && prop[key] : prop;\n};\n\nvar getDefaultProp = function getDefaultProp(props, key) {\n  return props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n};\n\nvar noopTransform = function noopTransform(value) {\n  return value;\n};\n\nvar getDefaultProps = function getDefaultProps(props) {\n  var transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noopTransform;\n  var keys = DEFAULT_PROPS;\n\n  if (props.default && props.default !== true) {\n    props = props.default;\n    keys = Object.keys(props);\n  }\n\n  var defaults = {};\n\n  var _iterator = _createForOfIteratorHelper(keys),\n      _step;\n\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var key = _step.value;\n      var value = transform(props[key], key);\n\n      if (!is.und(value)) {\n        defaults[key] = value;\n      }\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n\n  return defaults;\n};\n\nvar DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nvar RESERVED_PROPS = {\n  config: 1,\n  from: 1,\n  to: 1,\n  ref: 1,\n  loop: 1,\n  reset: 1,\n  pause: 1,\n  cancel: 1,\n  reverse: 1,\n  immediate: 1,\n  default: 1,\n  delay: 1,\n  onProps: 1,\n  onStart: 1,\n  onChange: 1,\n  onPause: 1,\n  onResume: 1,\n  onRest: 1,\n  onResolve: 1,\n  items: 1,\n  trail: 1,\n  sort: 1,\n  expires: 1,\n  initial: 1,\n  enter: 1,\n  update: 1,\n  leave: 1,\n  children: 1,\n  onDestroyed: 1,\n  keys: 1,\n  callId: 1,\n  parentId: 1\n};\n\nfunction getForwardProps(props) {\n  var forward = {};\n  var count = 0;\n  eachProp(props, function (value, prop) {\n    if (!RESERVED_PROPS[prop]) {\n      forward[prop] = value;\n      count++;\n    }\n  });\n\n  if (count) {\n    return forward;\n  }\n}\n\nfunction inferTo(props) {\n  var to = getForwardProps(props);\n\n  if (to) {\n    var out = {\n      to: to\n    };\n    eachProp(props, function (val, key) {\n      return key in to || (out[key] = val);\n    });\n    return out;\n  }\n\n  return _extends({}, props);\n}\n\nfunction computeGoal(value) {\n  value = getFluidValue(value);\n  return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n    range: [0, 1],\n    output: [value, value]\n  })(1) : value;\n}\n\nfunction hasProps(props) {\n  for (var _ in props) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction isAsyncTo(to) {\n  return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\n\nfunction detachRefs(ctrl, ref) {\n  var _ctrl$ref;\n\n  (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n  ref == null ? void 0 : ref.delete(ctrl);\n}\n\nfunction replaceRef(ctrl, ref) {\n  if (ref && ctrl.ref !== ref) {\n    var _ctrl$ref2;\n\n    (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n    ref.add(ctrl);\n    ctrl.ref = ref;\n  }\n}\n\nfunction useChain(refs, timeSteps) {\n  var timeFrame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n  useLayoutEffect(function () {\n    if (timeSteps) {\n      var prevDelay = 0;\n      each(refs, function (ref, i) {\n        var controllers = ref.current;\n\n        if (controllers.length) {\n          var delay = timeFrame * timeSteps[i];\n          if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n          each(controllers, function (ctrl) {\n            each(ctrl.queue, function (props) {\n              var memoizedDelayProp = props.delay;\n\n              props.delay = function (key) {\n                return delay + callProp(memoizedDelayProp || 0, key);\n              };\n            });\n          });\n          ref.start();\n        }\n      });\n    } else {\n      var p = Promise.resolve();\n      each(refs, function (ref) {\n        var controllers = ref.current;\n\n        if (controllers.length) {\n          var queues = controllers.map(function (ctrl) {\n            var q = ctrl.queue;\n            ctrl.queue = [];\n            return q;\n          });\n          p = p.then(function () {\n            each(controllers, function (ctrl, i) {\n              return each(queues[i] || [], function (update) {\n                return ctrl.queue.push(update);\n              });\n            });\n            return Promise.all(ref.start());\n          });\n        }\n      });\n    }\n  });\n}\n\nvar config = {\n  default: {\n    tension: 170,\n    friction: 26\n  },\n  gentle: {\n    tension: 120,\n    friction: 14\n  },\n  wobbly: {\n    tension: 180,\n    friction: 12\n  },\n  stiff: {\n    tension: 210,\n    friction: 20\n  },\n  slow: {\n    tension: 280,\n    friction: 60\n  },\n  molasses: {\n    tension: 280,\n    friction: 120\n  }\n};\nvar c1 = 1.70158;\nvar c2 = c1 * 1.525;\nvar c3 = c1 + 1;\nvar c4 = 2 * Math.PI / 3;\nvar c5 = 2 * Math.PI / 4.5;\n\nvar bounceOut = function bounceOut(x) {\n  var n1 = 7.5625;\n  var d1 = 2.75;\n\n  if (x < 1 / d1) {\n    return n1 * x * x;\n  } else if (x < 2 / d1) {\n    return n1 * (x -= 1.5 / d1) * x + 0.75;\n  } else if (x < 2.5 / d1) {\n    return n1 * (x -= 2.25 / d1) * x + 0.9375;\n  } else {\n    return n1 * (x -= 2.625 / d1) * x + 0.984375;\n  }\n};\n\nvar easings = {\n  linear: function linear(x) {\n    return x;\n  },\n  easeInQuad: function easeInQuad(x) {\n    return x * x;\n  },\n  easeOutQuad: function easeOutQuad(x) {\n    return 1 - (1 - x) * (1 - x);\n  },\n  easeInOutQuad: function easeInOutQuad(x) {\n    return x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2;\n  },\n  easeInCubic: function easeInCubic(x) {\n    return x * x * x;\n  },\n  easeOutCubic: function easeOutCubic(x) {\n    return 1 - Math.pow(1 - x, 3);\n  },\n  easeInOutCubic: function easeInOutCubic(x) {\n    return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;\n  },\n  easeInQuart: function easeInQuart(x) {\n    return x * x * x * x;\n  },\n  easeOutQuart: function easeOutQuart(x) {\n    return 1 - Math.pow(1 - x, 4);\n  },\n  easeInOutQuart: function easeInOutQuart(x) {\n    return x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2;\n  },\n  easeInQuint: function easeInQuint(x) {\n    return x * x * x * x * x;\n  },\n  easeOutQuint: function easeOutQuint(x) {\n    return 1 - Math.pow(1 - x, 5);\n  },\n  easeInOutQuint: function easeInOutQuint(x) {\n    return x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2;\n  },\n  easeInSine: function easeInSine(x) {\n    return 1 - Math.cos(x * Math.PI / 2);\n  },\n  easeOutSine: function easeOutSine(x) {\n    return Math.sin(x * Math.PI / 2);\n  },\n  easeInOutSine: function easeInOutSine(x) {\n    return -(Math.cos(Math.PI * x) - 1) / 2;\n  },\n  easeInExpo: function easeInExpo(x) {\n    return x === 0 ? 0 : Math.pow(2, 10 * x - 10);\n  },\n  easeOutExpo: function easeOutExpo(x) {\n    return x === 1 ? 1 : 1 - Math.pow(2, -10 * x);\n  },\n  easeInOutExpo: function easeInOutExpo(x) {\n    return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2;\n  },\n  easeInCirc: function easeInCirc(x) {\n    return 1 - Math.sqrt(1 - Math.pow(x, 2));\n  },\n  easeOutCirc: function easeOutCirc(x) {\n    return Math.sqrt(1 - Math.pow(x - 1, 2));\n  },\n  easeInOutCirc: function easeInOutCirc(x) {\n    return x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2;\n  },\n  easeInBack: function easeInBack(x) {\n    return c3 * x * x * x - c1 * x * x;\n  },\n  easeOutBack: function easeOutBack(x) {\n    return 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2);\n  },\n  easeInOutBack: function easeInOutBack(x) {\n    return x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2;\n  },\n  easeInElastic: function easeInElastic(x) {\n    return x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4);\n  },\n  easeOutElastic: function easeOutElastic(x) {\n    return x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n  },\n  easeInOutElastic: function easeInOutElastic(x) {\n    return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1;\n  },\n  easeInBounce: function easeInBounce(x) {\n    return 1 - bounceOut(1 - x);\n  },\n  easeOutBounce: bounceOut,\n  easeInOutBounce: function easeInOutBounce(x) {\n    return x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2;\n  }\n};\n\nvar defaults = _extends({}, config.default, {\n  mass: 1,\n  damping: 1,\n  easing: easings.linear,\n  clamp: false\n});\n\nvar AnimationConfig = /*#__PURE__*/_createClass(function AnimationConfig() {\n  _classCallCheck(this, AnimationConfig);\n\n  this.tension = void 0;\n  this.friction = void 0;\n  this.frequency = void 0;\n  this.damping = void 0;\n  this.mass = void 0;\n  this.velocity = 0;\n  this.restVelocity = void 0;\n  this.precision = void 0;\n  this.progress = void 0;\n  this.duration = void 0;\n  this.easing = void 0;\n  this.clamp = void 0;\n  this.bounce = void 0;\n  this.decay = void 0;\n  this.round = void 0;\n  Object.assign(this, defaults);\n});\n\nfunction mergeConfig(config, newConfig, defaultConfig) {\n  if (defaultConfig) {\n    defaultConfig = _extends({}, defaultConfig);\n    sanitizeConfig(defaultConfig, newConfig);\n    newConfig = _extends({}, defaultConfig, newConfig);\n  }\n\n  sanitizeConfig(config, newConfig);\n  Object.assign(config, newConfig);\n\n  for (var key in defaults) {\n    if (config[key] == null) {\n      config[key] = defaults[key];\n    }\n  }\n\n  var mass = config.mass,\n      frequency = config.frequency,\n      damping = config.damping;\n\n  if (!is.und(frequency)) {\n    if (frequency < 0.01) frequency = 0.01;\n    if (damping < 0) damping = 0;\n    config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n    config.friction = 4 * Math.PI * damping * mass / frequency;\n  }\n\n  return config;\n}\n\nfunction sanitizeConfig(config, props) {\n  if (!is.und(props.decay)) {\n    config.duration = undefined;\n  } else {\n    var isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n    if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n      config.duration = undefined;\n      config.decay = undefined;\n    }\n\n    if (isTensionConfig) {\n      config.frequency = undefined;\n    }\n  }\n}\n\nvar emptyArray = [];\n\nvar Animation = /*#__PURE__*/_createClass(function Animation() {\n  _classCallCheck(this, Animation);\n\n  this.changed = false;\n  this.values = emptyArray;\n  this.toValues = null;\n  this.fromValues = emptyArray;\n  this.to = void 0;\n  this.from = void 0;\n  this.config = new AnimationConfig();\n  this.immediate = false;\n});\n\nfunction scheduleProps(callId, _ref2) {\n  var key = _ref2.key,\n      props = _ref2.props,\n      defaultProps = _ref2.defaultProps,\n      state = _ref2.state,\n      actions = _ref2.actions;\n  return new Promise(function (resolve, reject) {\n    var _props$cancel;\n\n    var delay;\n    var timeout;\n    var cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n    if (cancel) {\n      onStart();\n    } else {\n      if (!is.und(props.pause)) {\n        state.paused = matchProp(props.pause, key);\n      }\n\n      var pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n      if (pause !== true) {\n        pause = state.paused || matchProp(pause, key);\n      }\n\n      delay = callProp(props.delay || 0, key);\n\n      if (pause) {\n        state.resumeQueue.add(onResume);\n        actions.pause();\n      } else {\n        actions.resume();\n        onResume();\n      }\n    }\n\n    function onPause() {\n      state.resumeQueue.add(onResume);\n      state.timeouts.delete(timeout);\n      timeout.cancel();\n      delay = timeout.time - raf.now();\n    }\n\n    function onResume() {\n      if (delay > 0 && !Globals.skipAnimation) {\n        state.delayed = true;\n        timeout = raf.setTimeout(onStart, delay);\n        state.pauseQueue.add(onPause);\n        state.timeouts.add(timeout);\n      } else {\n        onStart();\n      }\n    }\n\n    function onStart() {\n      if (state.delayed) {\n        state.delayed = false;\n      }\n\n      state.pauseQueue.delete(onPause);\n      state.timeouts.delete(timeout);\n\n      if (callId <= (state.cancelId || 0)) {\n        cancel = true;\n      }\n\n      try {\n        actions.start(_extends({}, props, {\n          callId: callId,\n          cancel: cancel\n        }), resolve);\n      } catch (err) {\n        reject(err);\n      }\n    }\n  });\n}\n\nvar getCombinedResult = function getCombinedResult(target, results) {\n  return results.length == 1 ? results[0] : results.some(function (result) {\n    return result.cancelled;\n  }) ? getCancelledResult(target.get()) : results.every(function (result) {\n    return result.noop;\n  }) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(function (result) {\n    return result.finished;\n  }));\n};\n\nvar getNoopResult = function getNoopResult(value) {\n  return {\n    value: value,\n    noop: true,\n    finished: true,\n    cancelled: false\n  };\n};\n\nvar getFinishedResult = function getFinishedResult(value, finished) {\n  var cancelled = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  return {\n    value: value,\n    finished: finished,\n    cancelled: cancelled\n  };\n};\n\nvar getCancelledResult = function getCancelledResult(value) {\n  return {\n    value: value,\n    cancelled: true,\n    finished: false\n  };\n};\n\nfunction runAsync(to, props, state, target) {\n  var callId = props.callId,\n      parentId = props.parentId,\n      onRest = props.onRest;\n  var prevTo = state.asyncTo,\n      prevPromise = state.promise;\n\n  if (!parentId && to === prevTo && !props.reset) {\n    return prevPromise;\n  }\n\n  return state.promise = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {\n    var defaultProps, preventBail, bail, bailPromise, bailIfEnded, animate, result, animating;\n    return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n      while (1) {\n        switch (_context3.prev = _context3.next) {\n          case 0:\n            state.asyncId = callId;\n            state.asyncTo = to;\n            defaultProps = getDefaultProps(props, function (value, key) {\n              return key === 'onRest' ? undefined : value;\n            });\n            bailPromise = new Promise(function (resolve, reject) {\n              return preventBail = resolve, bail = reject;\n            });\n\n            bailIfEnded = function bailIfEnded(bailSignal) {\n              var bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n              if (bailResult) {\n                bailSignal.result = bailResult;\n                bail(bailSignal);\n                throw bailSignal;\n              }\n            };\n\n            animate = function animate(arg1, arg2) {\n              var bailSignal = new BailSignal();\n              var skipAnimationSignal = new SkipAniamtionSignal();\n              return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n                var props, result;\n                return _regeneratorRuntime.wrap(function _callee$(_context) {\n                  while (1) {\n                    switch (_context.prev = _context.next) {\n                      case 0:\n                        if (!Globals.skipAnimation) {\n                          _context.next = 5;\n                          break;\n                        }\n\n                        stopAsync(state);\n                        skipAnimationSignal.result = getFinishedResult(target, false);\n                        bail(skipAnimationSignal);\n                        throw skipAnimationSignal;\n\n                      case 5:\n                        bailIfEnded(bailSignal);\n                        props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n                          to: arg1\n                        });\n                        props.parentId = callId;\n                        eachProp(defaultProps, function (value, key) {\n                          if (is.und(props[key])) {\n                            props[key] = value;\n                          }\n                        });\n                        _context.next = 11;\n                        return target.start(props);\n\n                      case 11:\n                        result = _context.sent;\n                        bailIfEnded(bailSignal);\n\n                        if (!state.paused) {\n                          _context.next = 16;\n                          break;\n                        }\n\n                        _context.next = 16;\n                        return new Promise(function (resume) {\n                          state.resumeQueue.add(resume);\n                        });\n\n                      case 16:\n                        return _context.abrupt(\"return\", result);\n\n                      case 17:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }\n                }, _callee);\n              }))();\n            };\n\n            if (!Globals.skipAnimation) {\n              _context3.next = 9;\n              break;\n            }\n\n            stopAsync(state);\n            return _context3.abrupt(\"return\", getFinishedResult(target, false));\n\n          case 9:\n            _context3.prev = 9;\n\n            if (is.arr(to)) {\n              animating = function () {\n                var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(queue) {\n                  var _iterator2, _step2, _props;\n\n                  return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n                    while (1) {\n                      switch (_context2.prev = _context2.next) {\n                        case 0:\n                          _iterator2 = _createForOfIteratorHelper(queue);\n                          _context2.prev = 1;\n\n                          _iterator2.s();\n\n                        case 3:\n                          if ((_step2 = _iterator2.n()).done) {\n                            _context2.next = 9;\n                            break;\n                          }\n\n                          _props = _step2.value;\n                          _context2.next = 7;\n                          return animate(_props);\n\n                        case 7:\n                          _context2.next = 3;\n                          break;\n\n                        case 9:\n                          _context2.next = 14;\n                          break;\n\n                        case 11:\n                          _context2.prev = 11;\n                          _context2.t0 = _context2[\"catch\"](1);\n\n                          _iterator2.e(_context2.t0);\n\n                        case 14:\n                          _context2.prev = 14;\n\n                          _iterator2.f();\n\n                          return _context2.finish(14);\n\n                        case 17:\n                        case \"end\":\n                          return _context2.stop();\n                      }\n                    }\n                  }, _callee2, null, [[1, 11, 14, 17]]);\n                }));\n\n                return function (_x) {\n                  return _ref5.apply(this, arguments);\n                };\n              }()(to);\n            } else {\n              animating = Promise.resolve(to(animate, target.stop.bind(target)));\n            }\n\n            _context3.next = 13;\n            return Promise.all([animating.then(preventBail), bailPromise]);\n\n          case 13:\n            result = getFinishedResult(target.get(), true, false);\n            _context3.next = 27;\n            break;\n\n          case 16:\n            _context3.prev = 16;\n            _context3.t0 = _context3[\"catch\"](9);\n\n            if (!(_context3.t0 instanceof BailSignal)) {\n              _context3.next = 22;\n              break;\n            }\n\n            result = _context3.t0.result;\n            _context3.next = 27;\n            break;\n\n          case 22:\n            if (!(_context3.t0 instanceof SkipAniamtionSignal)) {\n              _context3.next = 26;\n              break;\n            }\n\n            result = _context3.t0.result;\n            _context3.next = 27;\n            break;\n\n          case 26:\n            throw _context3.t0;\n\n          case 27:\n            _context3.prev = 27;\n\n            if (callId == state.asyncId) {\n              state.asyncId = parentId;\n              state.asyncTo = parentId ? prevTo : undefined;\n              state.promise = parentId ? prevPromise : undefined;\n            }\n\n            return _context3.finish(27);\n\n          case 30:\n            if (is.fun(onRest)) {\n              raf.batchedUpdates(function () {\n                onRest(result, target, target.item);\n              });\n            }\n\n            return _context3.abrupt(\"return\", result);\n\n          case 32:\n          case \"end\":\n            return _context3.stop();\n        }\n      }\n    }, _callee3, null, [[9, 16, 27, 30]]);\n  }))();\n}\n\nfunction stopAsync(state, cancelId) {\n  flush(state.timeouts, function (t) {\n    return t.cancel();\n  });\n  state.pauseQueue.clear();\n  state.resumeQueue.clear();\n  state.asyncId = state.asyncTo = state.promise = undefined;\n  if (cancelId) state.cancelId = cancelId;\n}\n\nvar BailSignal = /*#__PURE__*/function (_Error) {\n  _inherits(BailSignal, _Error);\n\n  var _super = _createSuper(BailSignal);\n\n  function BailSignal() {\n    var _this;\n\n    _classCallCheck(this, BailSignal);\n\n    _this = _super.call(this, 'An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n    _this.result = void 0;\n    return _this;\n  }\n\n  return _createClass(BailSignal);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar SkipAniamtionSignal = /*#__PURE__*/function (_Error2) {\n  _inherits(SkipAniamtionSignal, _Error2);\n\n  var _super2 = _createSuper(SkipAniamtionSignal);\n\n  function SkipAniamtionSignal() {\n    var _this2;\n\n    _classCallCheck(this, SkipAniamtionSignal);\n\n    _this2 = _super2.call(this, 'SkipAnimationSignal');\n    _this2.result = void 0;\n    return _this2;\n  }\n\n  return _createClass(SkipAniamtionSignal);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar isFrameValue = function isFrameValue(value) {\n  return value instanceof FrameValue;\n};\n\nvar nextId$1 = 1;\n\nvar FrameValue = /*#__PURE__*/function (_FluidValue) {\n  _inherits(FrameValue, _FluidValue);\n\n  var _super3 = _createSuper(FrameValue);\n\n  function FrameValue() {\n    var _this3;\n\n    _classCallCheck(this, FrameValue);\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    _this3 = _super3.call.apply(_super3, [this].concat(args));\n    _this3.id = nextId$1++;\n    _this3.key = void 0;\n    _this3._priority = 0;\n    return _this3;\n  }\n\n  _createClass(FrameValue, [{\n    key: \"priority\",\n    get: function get() {\n      return this._priority;\n    },\n    set: function set(priority) {\n      if (this._priority != priority) {\n        this._priority = priority;\n\n        this._onPriorityChange(priority);\n      }\n    }\n  }, {\n    key: \"get\",\n    value: function get() {\n      var node = getAnimated(this);\n      return node && node.getValue();\n    }\n  }, {\n    key: \"to\",\n    value: function to() {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return Globals.to(this, args);\n    }\n  }, {\n    key: \"interpolate\",\n    value: function interpolate() {\n      deprecateInterpolate();\n\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return Globals.to(this, args);\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.get();\n    }\n  }, {\n    key: \"observerAdded\",\n    value: function observerAdded(count) {\n      if (count == 1) this._attach();\n    }\n  }, {\n    key: \"observerRemoved\",\n    value: function observerRemoved(count) {\n      if (count == 0) this._detach();\n    }\n  }, {\n    key: \"_attach\",\n    value: function _attach() {}\n  }, {\n    key: \"_detach\",\n    value: function _detach() {}\n  }, {\n    key: \"_onChange\",\n    value: function _onChange(value) {\n      var idle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      callFluidObservers(this, {\n        type: 'change',\n        parent: this,\n        value: value,\n        idle: idle\n      });\n    }\n  }, {\n    key: \"_onPriorityChange\",\n    value: function _onPriorityChange(priority) {\n      if (!this.idle) {\n        frameLoop.sort(this);\n      }\n\n      callFluidObservers(this, {\n        type: 'priority',\n        parent: this,\n        priority: priority\n      });\n    }\n  }]);\n\n  return FrameValue;\n}(FluidValue);\n\nvar $P = Symbol.for('SpringPhase');\nvar HAS_ANIMATED = 1;\nvar IS_ANIMATING = 2;\nvar IS_PAUSED = 4;\n\nvar hasAnimated = function hasAnimated(target) {\n  return (target[$P] & HAS_ANIMATED) > 0;\n};\n\nvar isAnimating = function isAnimating(target) {\n  return (target[$P] & IS_ANIMATING) > 0;\n};\n\nvar isPaused = function isPaused(target) {\n  return (target[$P] & IS_PAUSED) > 0;\n};\n\nvar setActiveBit = function setActiveBit(target, active) {\n  return active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\n};\n\nvar setPausedBit = function setPausedBit(target, paused) {\n  return paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n};\n\nvar SpringValue = /*#__PURE__*/function (_FrameValue) {\n  _inherits(SpringValue, _FrameValue);\n\n  var _super4 = _createSuper(SpringValue);\n\n  function SpringValue(arg1, arg2) {\n    var _this4;\n\n    _classCallCheck(this, SpringValue);\n\n    _this4 = _super4.call(this);\n    _this4.key = void 0;\n    _this4.animation = new Animation();\n    _this4.queue = void 0;\n    _this4.defaultProps = {};\n    _this4._state = {\n      paused: false,\n      delayed: false,\n      pauseQueue: new Set(),\n      resumeQueue: new Set(),\n      timeouts: new Set()\n    };\n    _this4._pendingCalls = new Set();\n    _this4._lastCallId = 0;\n    _this4._lastToId = 0;\n    _this4._memoizedDuration = 0;\n\n    if (!is.und(arg1) || !is.und(arg2)) {\n      var props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n        from: arg1\n      });\n\n      if (is.und(props.default)) {\n        props.default = true;\n      }\n\n      _this4.start(props);\n    }\n\n    return _this4;\n  }\n\n  _createClass(SpringValue, [{\n    key: \"idle\",\n    get: function get() {\n      return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n    }\n  }, {\n    key: \"goal\",\n    get: function get() {\n      return getFluidValue(this.animation.to);\n    }\n  }, {\n    key: \"velocity\",\n    get: function get() {\n      var node = getAnimated(this);\n      return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(function (node) {\n        return node.lastVelocity || 0;\n      });\n    }\n  }, {\n    key: \"hasAnimated\",\n    get: function get() {\n      return hasAnimated(this);\n    }\n  }, {\n    key: \"isAnimating\",\n    get: function get() {\n      return isAnimating(this);\n    }\n  }, {\n    key: \"isPaused\",\n    get: function get() {\n      return isPaused(this);\n    }\n  }, {\n    key: \"isDelayed\",\n    get: function get() {\n      return this._state.delayed;\n    }\n  }, {\n    key: \"advance\",\n    value: function advance(dt) {\n      var _this5 = this;\n\n      var idle = true;\n      var changed = false;\n      var anim = this.animation;\n      var config = anim.config,\n          toValues = anim.toValues;\n      var payload = getPayload(anim.to);\n\n      if (!payload && hasFluidValue(anim.to)) {\n        toValues = toArray(getFluidValue(anim.to));\n      }\n\n      anim.values.forEach(function (node, i) {\n        if (node.done) return;\n        var to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n        var finished = anim.immediate;\n        var position = to;\n\n        if (!finished) {\n          position = node.lastPosition;\n\n          if (config.tension <= 0) {\n            node.done = true;\n            return;\n          }\n\n          var elapsed = node.elapsedTime += dt;\n          var from = anim.fromValues[i];\n          var v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n          var velocity;\n\n          if (!is.und(config.duration)) {\n            var p = 1;\n\n            if (config.duration > 0) {\n              if (_this5._memoizedDuration !== config.duration) {\n                _this5._memoizedDuration = config.duration;\n\n                if (node.durationProgress > 0) {\n                  node.elapsedTime = config.duration * node.durationProgress;\n                  elapsed = node.elapsedTime += dt;\n                }\n              }\n\n              p = (config.progress || 0) + elapsed / _this5._memoizedDuration;\n              p = p > 1 ? 1 : p < 0 ? 0 : p;\n              node.durationProgress = p;\n            }\n\n            position = from + config.easing(p) * (to - from);\n            velocity = (position - node.lastPosition) / dt;\n            finished = p == 1;\n          } else if (config.decay) {\n            var decay = config.decay === true ? 0.998 : config.decay;\n            var e = Math.exp(-(1 - decay) * elapsed);\n            position = from + v0 / (1 - decay) * (1 - e);\n            finished = Math.abs(node.lastPosition - position) < 0.1;\n            velocity = v0 * e;\n          } else {\n            velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n            var precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n            var restVelocity = config.restVelocity || precision / 10;\n            var bounceFactor = config.clamp ? 0 : config.bounce;\n            var canBounce = !is.und(bounceFactor);\n            var isGrowing = from == to ? node.v0 > 0 : from < to;\n            var isMoving;\n            var isBouncing = false;\n            var step = 1;\n            var numSteps = Math.ceil(dt / step);\n\n            for (var n = 0; n < numSteps; ++n) {\n              isMoving = Math.abs(velocity) > restVelocity;\n\n              if (!isMoving) {\n                finished = Math.abs(to - position) <= precision;\n\n                if (finished) {\n                  break;\n                }\n              }\n\n              if (canBounce) {\n                isBouncing = position == to || position > to == isGrowing;\n\n                if (isBouncing) {\n                  velocity = -velocity * bounceFactor;\n                  position = to;\n                }\n              }\n\n              var springForce = -config.tension * 0.000001 * (position - to);\n              var dampingForce = -config.friction * 0.001 * velocity;\n              var acceleration = (springForce + dampingForce) / config.mass;\n              velocity = velocity + acceleration * step;\n              position = position + velocity * step;\n            }\n          }\n\n          node.lastVelocity = velocity;\n\n          if (Number.isNaN(position)) {\n            console.warn(\"Got NaN while animating:\", _this5);\n            finished = true;\n          }\n        }\n\n        if (payload && !payload[i].done) {\n          finished = false;\n        }\n\n        if (finished) {\n          node.done = true;\n        } else {\n          idle = false;\n        }\n\n        if (node.setValue(position, config.round)) {\n          changed = true;\n        }\n      });\n      var node = getAnimated(this);\n      var currVal = node.getValue();\n\n      if (idle) {\n        var finalVal = getFluidValue(anim.to);\n\n        if ((currVal !== finalVal || changed) && !config.decay) {\n          node.setValue(finalVal);\n\n          this._onChange(finalVal);\n        } else if (changed && config.decay) {\n          this._onChange(currVal);\n        }\n\n        this._stop();\n      } else if (changed) {\n        this._onChange(currVal);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(value) {\n      var _this6 = this;\n\n      raf.batchedUpdates(function () {\n        _this6._stop();\n\n        _this6._focus(value);\n\n        _this6._set(value);\n      });\n      return this;\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this._update({\n        pause: true\n      });\n    }\n  }, {\n    key: \"resume\",\n    value: function resume() {\n      this._update({\n        pause: false\n      });\n    }\n  }, {\n    key: \"finish\",\n    value: function finish() {\n      var _this7 = this;\n\n      if (isAnimating(this)) {\n        var _this$animation = this.animation,\n            _to = _this$animation.to,\n            _config = _this$animation.config;\n        raf.batchedUpdates(function () {\n          _this7._onStart();\n\n          if (!_config.decay) {\n            _this7._set(_to, false);\n          }\n\n          _this7._stop();\n        });\n      }\n\n      return this;\n    }\n  }, {\n    key: \"update\",\n    value: function update(props) {\n      var queue = this.queue || (this.queue = []);\n      queue.push(props);\n      return this;\n    }\n  }, {\n    key: \"start\",\n    value: function start(to, arg2) {\n      var _this8 = this;\n\n      var queue;\n\n      if (!is.und(to)) {\n        queue = [is.obj(to) ? to : _extends({}, arg2, {\n          to: to\n        })];\n      } else {\n        queue = this.queue || [];\n        this.queue = [];\n      }\n\n      return Promise.all(queue.map(function (props) {\n        var up = _this8._update(props);\n\n        return up;\n      })).then(function (results) {\n        return getCombinedResult(_this8, results);\n      });\n    }\n  }, {\n    key: \"stop\",\n    value: function stop(cancel) {\n      var _this9 = this;\n\n      var to = this.animation.to;\n\n      this._focus(this.get());\n\n      stopAsync(this._state, cancel && this._lastCallId);\n      raf.batchedUpdates(function () {\n        return _this9._stop(to, cancel);\n      });\n      return this;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this._update({\n        reset: true\n      });\n    }\n  }, {\n    key: \"eventObserved\",\n    value: function eventObserved(event) {\n      if (event.type == 'change') {\n        this._start();\n      } else if (event.type == 'priority') {\n        this.priority = event.priority + 1;\n      }\n    }\n  }, {\n    key: \"_prepareNode\",\n    value: function _prepareNode(props) {\n      var key = this.key || '';\n      var to = props.to,\n          from = props.from;\n      to = is.obj(to) ? to[key] : to;\n\n      if (to == null || isAsyncTo(to)) {\n        to = undefined;\n      }\n\n      from = is.obj(from) ? from[key] : from;\n\n      if (from == null) {\n        from = undefined;\n      }\n\n      var range = {\n        to: to,\n        from: from\n      };\n\n      if (!hasAnimated(this)) {\n        if (props.reverse) {\n          var _ref6 = [from, to];\n          to = _ref6[0];\n          from = _ref6[1];\n        }\n\n        from = getFluidValue(from);\n\n        if (!is.und(from)) {\n          this._set(from);\n        } else if (!getAnimated(this)) {\n          this._set(to);\n        }\n      }\n\n      return range;\n    }\n  }, {\n    key: \"_update\",\n    value: function _update(_ref, isLoop) {\n      var _this10 = this;\n\n      var props = _extends({}, _ref);\n\n      var key = this.key,\n          defaultProps = this.defaultProps;\n      if (props.default) Object.assign(defaultProps, getDefaultProps(props, function (value, prop) {\n        return /^on/.test(prop) ? resolveProp(value, key) : value;\n      }));\n      mergeActiveFn(this, props, 'onProps');\n      sendEvent(this, 'onProps', props, this);\n\n      var range = this._prepareNode(props);\n\n      if (Object.isFrozen(this)) {\n        throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n      }\n\n      var state = this._state;\n      return scheduleProps(++this._lastCallId, {\n        key: key,\n        props: props,\n        defaultProps: defaultProps,\n        state: state,\n        actions: {\n          pause: function pause() {\n            if (!isPaused(_this10)) {\n              setPausedBit(_this10, true);\n              flushCalls(state.pauseQueue);\n              sendEvent(_this10, 'onPause', getFinishedResult(_this10, checkFinished(_this10, _this10.animation.to)), _this10);\n            }\n          },\n          resume: function resume() {\n            if (isPaused(_this10)) {\n              setPausedBit(_this10, false);\n\n              if (isAnimating(_this10)) {\n                _this10._resume();\n              }\n\n              flushCalls(state.resumeQueue);\n              sendEvent(_this10, 'onResume', getFinishedResult(_this10, checkFinished(_this10, _this10.animation.to)), _this10);\n            }\n          },\n          start: this._merge.bind(this, range)\n        }\n      }).then(function (result) {\n        if (props.loop && result.finished && !(isLoop && result.noop)) {\n          var nextProps = createLoopUpdate(props);\n\n          if (nextProps) {\n            return _this10._update(nextProps, true);\n          }\n        }\n\n        return result;\n      });\n    }\n  }, {\n    key: \"_merge\",\n    value: function _merge(range, props, resolve) {\n      var _this11 = this;\n\n      if (props.cancel) {\n        this.stop(true);\n        return resolve(getCancelledResult(this));\n      }\n\n      var hasToProp = !is.und(range.to);\n      var hasFromProp = !is.und(range.from);\n\n      if (hasToProp || hasFromProp) {\n        if (props.callId > this._lastToId) {\n          this._lastToId = props.callId;\n        } else {\n          return resolve(getCancelledResult(this));\n        }\n      }\n\n      var key = this.key,\n          defaultProps = this.defaultProps,\n          anim = this.animation;\n      var prevTo = anim.to,\n          prevFrom = anim.from;\n      var _range$to = range.to,\n          to = _range$to === void 0 ? prevTo : _range$to,\n          _range$from = range.from,\n          from = _range$from === void 0 ? prevFrom : _range$from;\n\n      if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n        to = from;\n      }\n\n      if (props.reverse) {\n        var _ref7 = [from, to];\n        to = _ref7[0];\n        from = _ref7[1];\n      }\n\n      var hasFromChanged = !isEqual(from, prevFrom);\n\n      if (hasFromChanged) {\n        anim.from = from;\n      }\n\n      from = getFluidValue(from);\n      var hasToChanged = !isEqual(to, prevTo);\n\n      if (hasToChanged) {\n        this._focus(to);\n      }\n\n      var hasAsyncTo = isAsyncTo(props.to);\n      var config = anim.config;\n      var decay = config.decay,\n          velocity = config.velocity;\n\n      if (hasToProp || hasFromProp) {\n        config.velocity = 0;\n      }\n\n      if (props.config && !hasAsyncTo) {\n        mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n      }\n\n      var node = getAnimated(this);\n\n      if (!node || is.und(to)) {\n        return resolve(getFinishedResult(this, true));\n      }\n\n      var reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n      var value = reset ? from : this.get();\n      var goal = computeGoal(to);\n      var isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n      var immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n      if (hasToChanged) {\n        var nodeType = getAnimatedType(to);\n\n        if (nodeType !== node.constructor) {\n          if (immediate) {\n            node = this._set(goal);\n          } else throw Error(\"Cannot animate between \".concat(node.constructor.name, \" and \").concat(nodeType.name, \", as the \\\"to\\\" prop suggests\"));\n        }\n      }\n\n      var goalType = node.constructor;\n      var started = hasFluidValue(to);\n      var finished = false;\n\n      if (!started) {\n        var hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n        if (hasToChanged || hasValueChanged) {\n          finished = isEqual(computeGoal(value), goal);\n          started = !finished;\n        }\n\n        if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n          started = true;\n        }\n      }\n\n      if (finished && isAnimating(this)) {\n        if (anim.changed && !reset) {\n          started = true;\n        } else if (!started) {\n          this._stop(prevTo);\n        }\n      }\n\n      if (!hasAsyncTo) {\n        if (started || hasFluidValue(prevTo)) {\n          anim.values = node.getPayload();\n          anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n        }\n\n        if (anim.immediate != immediate) {\n          anim.immediate = immediate;\n\n          if (!immediate && !reset) {\n            this._set(prevTo);\n          }\n        }\n\n        if (started) {\n          var onRest = anim.onRest;\n          each(ACTIVE_EVENTS, function (type) {\n            return mergeActiveFn(_this11, props, type);\n          });\n          var result = getFinishedResult(this, checkFinished(this, prevTo));\n          flushCalls(this._pendingCalls, result);\n\n          this._pendingCalls.add(resolve);\n\n          if (anim.changed) raf.batchedUpdates(function () {\n            anim.changed = !reset;\n            onRest == null ? void 0 : onRest(result, _this11);\n\n            if (reset) {\n              callProp(defaultProps.onRest, result);\n            } else {\n              anim.onStart == null ? void 0 : anim.onStart(result, _this11);\n            }\n          });\n        }\n      }\n\n      if (reset) {\n        this._set(value);\n      }\n\n      if (hasAsyncTo) {\n        resolve(runAsync(props.to, props, this._state, this));\n      } else if (started) {\n        this._start();\n      } else if (isAnimating(this) && !hasToChanged) {\n        this._pendingCalls.add(resolve);\n      } else {\n        resolve(getNoopResult(value));\n      }\n    }\n  }, {\n    key: \"_focus\",\n    value: function _focus(value) {\n      var anim = this.animation;\n\n      if (value !== anim.to) {\n        if (getFluidObservers(this)) {\n          this._detach();\n        }\n\n        anim.to = value;\n\n        if (getFluidObservers(this)) {\n          this._attach();\n        }\n      }\n    }\n  }, {\n    key: \"_attach\",\n    value: function _attach() {\n      var priority = 0;\n      var to = this.animation.to;\n\n      if (hasFluidValue(to)) {\n        addFluidObserver(to, this);\n\n        if (isFrameValue(to)) {\n          priority = to.priority + 1;\n        }\n      }\n\n      this.priority = priority;\n    }\n  }, {\n    key: \"_detach\",\n    value: function _detach() {\n      var to = this.animation.to;\n\n      if (hasFluidValue(to)) {\n        removeFluidObserver(to, this);\n      }\n    }\n  }, {\n    key: \"_set\",\n    value: function _set(arg) {\n      var _this12 = this;\n\n      var idle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var value = getFluidValue(arg);\n\n      if (!is.und(value)) {\n        var oldNode = getAnimated(this);\n\n        if (!oldNode || !isEqual(value, oldNode.getValue())) {\n          var nodeType = getAnimatedType(value);\n\n          if (!oldNode || oldNode.constructor != nodeType) {\n            setAnimated(this, nodeType.create(value));\n          } else {\n            oldNode.setValue(value);\n          }\n\n          if (oldNode) {\n            raf.batchedUpdates(function () {\n              _this12._onChange(value, idle);\n            });\n          }\n        }\n      }\n\n      return getAnimated(this);\n    }\n  }, {\n    key: \"_onStart\",\n    value: function _onStart() {\n      var anim = this.animation;\n\n      if (!anim.changed) {\n        anim.changed = true;\n        sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n      }\n    }\n  }, {\n    key: \"_onChange\",\n    value: function _onChange(value, idle) {\n      if (!idle) {\n        this._onStart();\n\n        callProp(this.animation.onChange, value, this);\n      }\n\n      callProp(this.defaultProps.onChange, value, this);\n\n      _get(_getPrototypeOf(SpringValue.prototype), \"_onChange\", this).call(this, value, idle);\n    }\n  }, {\n    key: \"_start\",\n    value: function _start() {\n      var anim = this.animation;\n      getAnimated(this).reset(getFluidValue(anim.to));\n\n      if (!anim.immediate) {\n        anim.fromValues = anim.values.map(function (node) {\n          return node.lastPosition;\n        });\n      }\n\n      if (!isAnimating(this)) {\n        setActiveBit(this, true);\n\n        if (!isPaused(this)) {\n          this._resume();\n        }\n      }\n    }\n  }, {\n    key: \"_resume\",\n    value: function _resume() {\n      if (Globals.skipAnimation) {\n        this.finish();\n      } else {\n        frameLoop.start(this);\n      }\n    }\n  }, {\n    key: \"_stop\",\n    value: function _stop(goal, cancel) {\n      if (isAnimating(this)) {\n        setActiveBit(this, false);\n        var anim = this.animation;\n        each(anim.values, function (node) {\n          node.done = true;\n        });\n\n        if (anim.toValues) {\n          anim.onChange = anim.onPause = anim.onResume = undefined;\n        }\n\n        callFluidObservers(this, {\n          type: 'idle',\n          parent: this\n        });\n        var result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n        flushCalls(this._pendingCalls, result);\n\n        if (anim.changed) {\n          anim.changed = false;\n          sendEvent(this, 'onRest', result, this);\n        }\n      }\n    }\n  }]);\n\n  return SpringValue;\n}(FrameValue);\n\nfunction checkFinished(target, to) {\n  var goal = computeGoal(to);\n  var value = computeGoal(target.get());\n  return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props) {\n  var loop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.loop;\n  var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : props.to;\n  var loopRet = callProp(loop);\n\n  if (loopRet) {\n    var overrides = loopRet !== true && inferTo(loopRet);\n    var reverse = (overrides || props).reverse;\n    var reset = !overrides || overrides.reset;\n    return createUpdate(_extends({}, props, {\n      loop: loop,\n      default: false,\n      pause: undefined,\n      to: !reverse || isAsyncTo(to) ? to : undefined,\n      from: reset ? props.from : undefined,\n      reset: reset\n    }, overrides));\n  }\n}\n\nfunction createUpdate(props) {\n  var _props2 = props = inferTo(props),\n      to = _props2.to,\n      from = _props2.from;\n\n  var keys = new Set();\n  if (is.obj(to)) findDefined(to, keys);\n  if (is.obj(from)) findDefined(from, keys);\n  props.keys = keys.size ? Array.from(keys) : null;\n  return props;\n}\n\nfunction declareUpdate(props) {\n  var update = createUpdate(props);\n\n  if (is.und(update.default)) {\n    update.default = getDefaultProps(update);\n  }\n\n  return update;\n}\n\nfunction findDefined(values, keys) {\n  eachProp(values, function (value, key) {\n    return value != null && keys.add(key);\n  });\n}\n\nvar ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n  target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type) {\n  var _target$animation$typ2, _target$defaultProps$2;\n\n  var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n  for (var _len5 = arguments.length, args = new Array(_len5 > 2 ? _len5 - 2 : 0), _key5 = 2; _key5 < _len5; _key5++) {\n    args[_key5 - 2] = arguments[_key5];\n  }\n\n  (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : (_target$animation$typ2 = _target$animation$typ).call.apply(_target$animation$typ2, [_target$animation].concat(args));\n  (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : (_target$defaultProps$2 = _target$defaultProps$).call.apply(_target$defaultProps$2, [_target$defaultProps].concat(args));\n}\n\nvar BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nvar nextId = 1;\n\nvar Controller = /*#__PURE__*/function () {\n  function Controller(props, flush) {\n    _classCallCheck(this, Controller);\n\n    this.id = nextId++;\n    this.springs = {};\n    this.queue = [];\n    this.ref = void 0;\n    this._flush = void 0;\n    this._initialProps = void 0;\n    this._lastAsyncId = 0;\n    this._active = new Set();\n    this._changed = new Set();\n    this._started = false;\n    this._item = void 0;\n    this._state = {\n      paused: false,\n      pauseQueue: new Set(),\n      resumeQueue: new Set(),\n      timeouts: new Set()\n    };\n    this._events = {\n      onStart: new Map(),\n      onChange: new Map(),\n      onRest: new Map()\n    };\n    this._onFrame = this._onFrame.bind(this);\n\n    if (flush) {\n      this._flush = flush;\n    }\n\n    if (props) {\n      this.start(_extends({\n        default: true\n      }, props));\n    }\n  }\n\n  _createClass(Controller, [{\n    key: \"idle\",\n    get: function get() {\n      return !this._state.asyncTo && Object.values(this.springs).every(function (spring) {\n        return spring.idle && !spring.isDelayed && !spring.isPaused;\n      });\n    }\n  }, {\n    key: \"item\",\n    get: function get() {\n      return this._item;\n    },\n    set: function set(item) {\n      this._item = item;\n    }\n  }, {\n    key: \"get\",\n    value: function get() {\n      var values = {};\n      this.each(function (spring, key) {\n        return values[key] = spring.get();\n      });\n      return values;\n    }\n  }, {\n    key: \"set\",\n    value: function set(values) {\n      for (var key in values) {\n        var value = values[key];\n\n        if (!is.und(value)) {\n          this.springs[key].set(value);\n        }\n      }\n    }\n  }, {\n    key: \"update\",\n    value: function update(props) {\n      if (props) {\n        this.queue.push(createUpdate(props));\n      }\n\n      return this;\n    }\n  }, {\n    key: \"start\",\n    value: function start(props) {\n      var queue = this.queue;\n\n      if (props) {\n        queue = toArray(props).map(createUpdate);\n      } else {\n        this.queue = [];\n      }\n\n      if (this._flush) {\n        return this._flush(this, queue);\n      }\n\n      prepareKeys(this, queue);\n      return flushUpdateQueue(this, queue);\n    }\n  }, {\n    key: \"stop\",\n    value: function stop(arg, keys) {\n      if (arg !== !!arg) {\n        keys = arg;\n      }\n\n      if (keys) {\n        var springs = this.springs;\n        each(toArray(keys), function (key) {\n          return springs[key].stop(!!arg);\n        });\n      } else {\n        stopAsync(this._state, this._lastAsyncId);\n        this.each(function (spring) {\n          return spring.stop(!!arg);\n        });\n      }\n\n      return this;\n    }\n  }, {\n    key: \"pause\",\n    value: function pause(keys) {\n      if (is.und(keys)) {\n        this.start({\n          pause: true\n        });\n      } else {\n        var springs = this.springs;\n        each(toArray(keys), function (key) {\n          return springs[key].pause();\n        });\n      }\n\n      return this;\n    }\n  }, {\n    key: \"resume\",\n    value: function resume(keys) {\n      if (is.und(keys)) {\n        this.start({\n          pause: false\n        });\n      } else {\n        var springs = this.springs;\n        each(toArray(keys), function (key) {\n          return springs[key].resume();\n        });\n      }\n\n      return this;\n    }\n  }, {\n    key: \"each\",\n    value: function each(iterator) {\n      eachProp(this.springs, iterator);\n    }\n  }, {\n    key: \"_onFrame\",\n    value: function _onFrame() {\n      var _this13 = this;\n\n      var _this$_events = this._events,\n          onStart = _this$_events.onStart,\n          onChange = _this$_events.onChange,\n          onRest = _this$_events.onRest;\n      var active = this._active.size > 0;\n      var changed = this._changed.size > 0;\n\n      if (active && !this._started || changed && !this._started) {\n        this._started = true;\n        flush(onStart, function (_ref8) {\n          var _ref9 = _slicedToArray(_ref8, 2),\n              onStart = _ref9[0],\n              result = _ref9[1];\n\n          result.value = _this13.get();\n          onStart(result, _this13, _this13._item);\n        });\n      }\n\n      var idle = !active && this._started;\n      var values = changed || idle && onRest.size ? this.get() : null;\n\n      if (changed && onChange.size) {\n        flush(onChange, function (_ref10) {\n          var _ref11 = _slicedToArray(_ref10, 2),\n              onChange = _ref11[0],\n              result = _ref11[1];\n\n          result.value = values;\n          onChange(result, _this13, _this13._item);\n        });\n      }\n\n      if (idle) {\n        this._started = false;\n        flush(onRest, function (_ref12) {\n          var _ref13 = _slicedToArray(_ref12, 2),\n              onRest = _ref13[0],\n              result = _ref13[1];\n\n          result.value = values;\n          onRest(result, _this13, _this13._item);\n        });\n      }\n    }\n  }, {\n    key: \"eventObserved\",\n    value: function eventObserved(event) {\n      if (event.type == 'change') {\n        this._changed.add(event.parent);\n\n        if (!event.idle) {\n          this._active.add(event.parent);\n        }\n      } else if (event.type == 'idle') {\n        this._active.delete(event.parent);\n      } else return;\n\n      raf.onFrame(this._onFrame);\n    }\n  }]);\n\n  return Controller;\n}();\n\nfunction flushUpdateQueue(ctrl, queue) {\n  return Promise.all(queue.map(function (props) {\n    return flushUpdate(ctrl, props);\n  })).then(function (results) {\n    return getCombinedResult(ctrl, results);\n  });\n}\n\nfunction flushUpdate(_x2, _x3, _x4) {\n  return _flushUpdate.apply(this, arguments);\n}\n\nfunction _flushUpdate() {\n  _flushUpdate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(ctrl, props, isLoop) {\n    var keys, to, from, loop, onRest, onResolve, defaults, asyncTo, state, promises, cancel, result, nextProps;\n    return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n      while (1) {\n        switch (_context4.prev = _context4.next) {\n          case 0:\n            keys = props.keys, to = props.to, from = props.from, loop = props.loop, onRest = props.onRest, onResolve = props.onResolve;\n            defaults = is.obj(props.default) && props.default;\n\n            if (loop) {\n              props.loop = false;\n            }\n\n            if (to === false) props.to = null;\n            if (from === false) props.from = null;\n            asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n            if (asyncTo) {\n              props.to = undefined;\n              props.onRest = undefined;\n\n              if (defaults) {\n                defaults.onRest = undefined;\n              }\n            } else {\n              each(BATCHED_EVENTS, function (key) {\n                var handler = props[key];\n\n                if (is.fun(handler)) {\n                  var queue = ctrl['_events'][key];\n\n                  props[key] = function (_ref20) {\n                    var finished = _ref20.finished,\n                        cancelled = _ref20.cancelled;\n                    var result = queue.get(handler);\n\n                    if (result) {\n                      if (!finished) result.finished = false;\n                      if (cancelled) result.cancelled = true;\n                    } else {\n                      queue.set(handler, {\n                        value: null,\n                        finished: finished || false,\n                        cancelled: cancelled || false\n                      });\n                    }\n                  };\n\n                  if (defaults) {\n                    defaults[key] = props[key];\n                  }\n                }\n              });\n            }\n\n            state = ctrl['_state'];\n\n            if (props.pause === !state.paused) {\n              state.paused = props.pause;\n              flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n            } else if (state.paused) {\n              props.pause = true;\n            }\n\n            promises = (keys || Object.keys(ctrl.springs)).map(function (key) {\n              return ctrl.springs[key].start(props);\n            });\n            cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n            if (asyncTo || cancel && state.asyncId) {\n              promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n                props: props,\n                state: state,\n                actions: {\n                  pause: noop,\n                  resume: noop,\n                  start: function start(props, resolve) {\n                    if (cancel) {\n                      stopAsync(state, ctrl['_lastAsyncId']);\n                      resolve(getCancelledResult(ctrl));\n                    } else {\n                      props.onRest = onRest;\n                      resolve(runAsync(asyncTo, props, state, ctrl));\n                    }\n                  }\n                }\n              }));\n            }\n\n            if (!state.paused) {\n              _context4.next = 15;\n              break;\n            }\n\n            _context4.next = 15;\n            return new Promise(function (resume) {\n              state.resumeQueue.add(resume);\n            });\n\n          case 15:\n            _context4.t0 = getCombinedResult;\n            _context4.t1 = ctrl;\n            _context4.next = 19;\n            return Promise.all(promises);\n\n          case 19:\n            _context4.t2 = _context4.sent;\n            result = (0, _context4.t0)(_context4.t1, _context4.t2);\n\n            if (!(loop && result.finished && !(isLoop && result.noop))) {\n              _context4.next = 26;\n              break;\n            }\n\n            nextProps = createLoopUpdate(props, loop, to);\n\n            if (!nextProps) {\n              _context4.next = 26;\n              break;\n            }\n\n            prepareKeys(ctrl, [nextProps]);\n            return _context4.abrupt(\"return\", flushUpdate(ctrl, nextProps, true));\n\n          case 26:\n            if (onResolve) {\n              raf.batchedUpdates(function () {\n                return onResolve(result, ctrl, ctrl.item);\n              });\n            }\n\n            return _context4.abrupt(\"return\", result);\n\n          case 28:\n          case \"end\":\n            return _context4.stop();\n        }\n      }\n    }, _callee4);\n  }));\n  return _flushUpdate.apply(this, arguments);\n}\n\nfunction getSprings(ctrl, props) {\n  var springs = _extends({}, ctrl.springs);\n\n  if (props) {\n    each(toArray(props), function (props) {\n      if (is.und(props.keys)) {\n        props = createUpdate(props);\n      }\n\n      if (!is.obj(props.to)) {\n        props = _extends({}, props, {\n          to: undefined\n        });\n      }\n\n      prepareSprings(springs, props, function (key) {\n        return createSpring(key);\n      });\n    });\n  }\n\n  setSprings(ctrl, springs);\n  return springs;\n}\n\nfunction setSprings(ctrl, springs) {\n  eachProp(springs, function (spring, key) {\n    if (!ctrl.springs[key]) {\n      ctrl.springs[key] = spring;\n      addFluidObserver(spring, ctrl);\n    }\n  });\n}\n\nfunction createSpring(key, observer) {\n  var spring = new SpringValue();\n  spring.key = key;\n\n  if (observer) {\n    addFluidObserver(spring, observer);\n  }\n\n  return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n  if (props.keys) {\n    each(props.keys, function (key) {\n      var spring = springs[key] || (springs[key] = create(key));\n      spring['_prepareNode'](props);\n    });\n  }\n}\n\nfunction prepareKeys(ctrl, queue) {\n  each(queue, function (props) {\n    prepareSprings(ctrl.springs, props, function (key) {\n      return createSpring(key, ctrl);\n    });\n  });\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\nvar _excluded$3 = [\"children\"];\n\nvar SpringContext = function SpringContext(_ref) {\n  var children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n  var inherited = useContext(ctx);\n  var pause = props.pause || !!inherited.pause,\n      immediate = props.immediate || !!inherited.immediate;\n  props = useMemoOne(function () {\n    return {\n      pause: pause,\n      immediate: immediate\n    };\n  }, [pause, immediate]);\n  var Provider = ctx.Provider;\n  return React.createElement(Provider, {\n    value: props\n  }, children);\n};\n\nvar ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n  Object.assign(target, React.createContext(init));\n  target.Provider._context = target;\n  target.Consumer._context = target;\n  return target;\n}\n\nvar SpringRef = function SpringRef() {\n  var current = [];\n\n  var SpringRef = function SpringRef(props) {\n    deprecateDirectCall();\n    var results = [];\n    each(current, function (ctrl, i) {\n      if (is.und(props)) {\n        results.push(ctrl.start());\n      } else {\n        var _update2 = _getProps(props, ctrl, i);\n\n        if (_update2) {\n          results.push(ctrl.start(_update2));\n        }\n      }\n    });\n    return results;\n  };\n\n  SpringRef.current = current;\n\n  SpringRef.add = function (ctrl) {\n    if (!current.includes(ctrl)) {\n      current.push(ctrl);\n    }\n  };\n\n  SpringRef.delete = function (ctrl) {\n    var i = current.indexOf(ctrl);\n    if (~i) current.splice(i, 1);\n  };\n\n  SpringRef.pause = function () {\n    var _arguments = arguments;\n    each(current, function (ctrl) {\n      return ctrl.pause.apply(ctrl, _toConsumableArray(_arguments));\n    });\n    return this;\n  };\n\n  SpringRef.resume = function () {\n    var _arguments2 = arguments;\n    each(current, function (ctrl) {\n      return ctrl.resume.apply(ctrl, _toConsumableArray(_arguments2));\n    });\n    return this;\n  };\n\n  SpringRef.set = function (values) {\n    each(current, function (ctrl) {\n      return ctrl.set(values);\n    });\n  };\n\n  SpringRef.start = function (props) {\n    var _this14 = this;\n\n    var results = [];\n    each(current, function (ctrl, i) {\n      if (is.und(props)) {\n        results.push(ctrl.start());\n      } else {\n        var _update3 = _this14._getProps(props, ctrl, i);\n\n        if (_update3) {\n          results.push(ctrl.start(_update3));\n        }\n      }\n    });\n    return results;\n  };\n\n  SpringRef.stop = function () {\n    var _arguments3 = arguments;\n    each(current, function (ctrl) {\n      return ctrl.stop.apply(ctrl, _toConsumableArray(_arguments3));\n    });\n    return this;\n  };\n\n  SpringRef.update = function (props) {\n    var _this15 = this;\n\n    each(current, function (ctrl, i) {\n      return ctrl.update(_this15._getProps(props, ctrl, i));\n    });\n    return this;\n  };\n\n  var _getProps = function _getProps(arg, ctrl, index) {\n    return is.fun(arg) ? arg(index, ctrl) : arg;\n  };\n\n  SpringRef._getProps = _getProps;\n  return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n  var _arguments4 = arguments;\n  var propsFn = is.fun(props) && props;\n  if (propsFn && !deps) deps = [];\n  var ref = useMemo(function () {\n    return propsFn || _arguments4.length == 3 ? SpringRef() : void 0;\n  }, []);\n  var layoutId = useRef(0);\n  var forceUpdate = useForceUpdate();\n  var state = useMemo(function () {\n    return {\n      ctrls: [],\n      queue: [],\n      flush: function flush(ctrl, updates) {\n        var springs = getSprings(ctrl, updates);\n        var canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(function (key) {\n          return !ctrl.springs[key];\n        });\n        return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(function (resolve) {\n          setSprings(ctrl, springs);\n          state.queue.push(function () {\n            resolve(flushUpdateQueue(ctrl, updates));\n          });\n          forceUpdate();\n        });\n      }\n    };\n  }, []);\n  var ctrls = useRef(_toConsumableArray(state.ctrls));\n  var updates = [];\n  var prevLength = usePrev(length) || 0;\n  useMemo(function () {\n    each(ctrls.current.slice(length, prevLength), function (ctrl) {\n      detachRefs(ctrl, ref);\n      ctrl.stop(true);\n    });\n    ctrls.current.length = length;\n    declareUpdates(prevLength, length);\n  }, [length]);\n  useMemo(function () {\n    declareUpdates(0, Math.min(prevLength, length));\n  }, deps);\n\n  function declareUpdates(startIndex, endIndex) {\n    for (var i = startIndex; i < endIndex; i++) {\n      var ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n\n      var _update4 = propsFn ? propsFn(i, ctrl) : props[i];\n\n      if (_update4) {\n        updates[i] = declareUpdate(_update4);\n      }\n    }\n  }\n\n  var springs = ctrls.current.map(function (ctrl, i) {\n    return getSprings(ctrl, updates[i]);\n  });\n  var context = useContext(SpringContext);\n  var prevContext = usePrev(context);\n  var hasContext = context !== prevContext && hasProps(context);\n  useLayoutEffect(function () {\n    layoutId.current++;\n    state.ctrls = ctrls.current;\n    var queue = state.queue;\n\n    if (queue.length) {\n      state.queue = [];\n      each(queue, function (cb) {\n        return cb();\n      });\n    }\n\n    each(ctrls.current, function (ctrl, i) {\n      ref == null ? void 0 : ref.add(ctrl);\n\n      if (hasContext) {\n        ctrl.start({\n          default: context\n        });\n      }\n\n      var update = updates[i];\n\n      if (update) {\n        replaceRef(ctrl, update.ref);\n\n        if (ctrl.ref) {\n          ctrl.queue.push(update);\n        } else {\n          ctrl.start(update);\n        }\n      }\n    });\n  });\n  useOnce(function () {\n    return function () {\n      each(state.ctrls, function (ctrl) {\n        return ctrl.stop(true);\n      });\n    };\n  });\n  var values = springs.map(function (x) {\n    return _extends({}, x);\n  });\n  return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n  var isFn = is.fun(props);\n\n  var _useSprings = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps),\n      _useSprings2 = _slicedToArray(_useSprings, 2),\n      _useSprings2$ = _slicedToArray(_useSprings2[0], 1),\n      values = _useSprings2$[0],\n      ref = _useSprings2[1];\n\n  return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nvar initSpringRef = function initSpringRef() {\n  return SpringRef();\n};\n\nvar useSpringRef = function useSpringRef() {\n  return useState(initSpringRef)[0];\n};\n\nfunction useTrail(length, propsArg, deps) {\n  var _passedRef;\n\n  var propsFn = is.fun(propsArg) && propsArg;\n  if (propsFn && !deps) deps = [];\n  var reverse = true;\n  var passedRef = undefined;\n  var result = useSprings(length, function (i, ctrl) {\n    var props = propsFn ? propsFn(i, ctrl) : propsArg;\n    passedRef = props.ref;\n    reverse = reverse && props.reverse;\n    return props;\n  }, deps || [{}]);\n  var ref = (_passedRef = passedRef) != null ? _passedRef : result[1];\n  useLayoutEffect(function () {\n    each(ref.current, function (ctrl, i) {\n      var parent = ref.current[i + (reverse ? 1 : -1)];\n\n      if (parent) {\n        ctrl.start({\n          to: parent.springs\n        });\n      } else {\n        ctrl.start();\n      }\n    });\n  }, deps);\n\n  if (propsFn || arguments.length == 3) {\n    ref['_getProps'] = function (propsArg, ctrl, i) {\n      var props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n      if (props) {\n        var parent = ref.current[i + (props.reverse ? 1 : -1)];\n        if (parent) props.to = parent.springs;\n        return props;\n      }\n    };\n\n    return result;\n  }\n\n  ref['start'] = function (propsArg) {\n    var results = [];\n    each(ref.current, function (ctrl, i) {\n      var props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n      var parent = ref.current[i + (reverse ? 1 : -1)];\n\n      if (parent) {\n        results.push(ctrl.start(_extends({}, props, {\n          to: parent.springs\n        })));\n      } else {\n        results.push(ctrl.start(_extends({}, props)));\n      }\n    });\n    return results;\n  };\n\n  return result[0];\n}\n\nvar TransitionPhase;\n\n(function (TransitionPhase) {\n  TransitionPhase[\"MOUNT\"] = \"mount\";\n  TransitionPhase[\"ENTER\"] = \"enter\";\n  TransitionPhase[\"UPDATE\"] = \"update\";\n  TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n  var _arguments5 = arguments;\n  var propsFn = is.fun(props) && props;\n\n  var _ref14 = propsFn ? propsFn() : props,\n      reset = _ref14.reset,\n      sort = _ref14.sort,\n      _ref14$trail = _ref14.trail,\n      trail = _ref14$trail === void 0 ? 0 : _ref14$trail,\n      _ref14$expires = _ref14.expires,\n      expires = _ref14$expires === void 0 ? true : _ref14$expires,\n      _ref14$exitBeforeEnte = _ref14.exitBeforeEnter,\n      exitBeforeEnter = _ref14$exitBeforeEnte === void 0 ? false : _ref14$exitBeforeEnte,\n      onDestroyed = _ref14.onDestroyed,\n      propsRef = _ref14.ref,\n      propsConfig = _ref14.config;\n\n  var ref = useMemo(function () {\n    return propsFn || _arguments5.length == 3 ? SpringRef() : void 0;\n  }, []);\n  var items = toArray(data);\n  var transitions = [];\n  var usedTransitions = useRef(null);\n  var prevTransitions = reset ? null : usedTransitions.current;\n  useLayoutEffect(function () {\n    usedTransitions.current = transitions;\n  });\n  useOnce(function () {\n    each(usedTransitions.current, function (t) {\n      var _t$ctrl$ref;\n\n      (_t$ctrl$ref = t.ctrl.ref) == null ? void 0 : _t$ctrl$ref.add(t.ctrl);\n      var change = changes.get(t);\n\n      if (change) {\n        t.ctrl.start(change.payload);\n      }\n    });\n    return function () {\n      each(usedTransitions.current, function (t) {\n        if (t.expired) {\n          clearTimeout(t.expirationId);\n        }\n\n        detachRefs(t.ctrl, ref);\n        t.ctrl.stop(true);\n      });\n    };\n  });\n  var keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n  var expired = reset && usedTransitions.current || [];\n  useLayoutEffect(function () {\n    return each(expired, function (_ref15) {\n      var ctrl = _ref15.ctrl,\n          item = _ref15.item,\n          key = _ref15.key;\n      detachRefs(ctrl, ref);\n      callProp(onDestroyed, item, key);\n    });\n  });\n  var reused = [];\n  if (prevTransitions) each(prevTransitions, function (t, i) {\n    if (t.expired) {\n      clearTimeout(t.expirationId);\n      expired.push(t);\n    } else {\n      i = reused[i] = keys.indexOf(t.key);\n      if (~i) transitions[i] = t;\n    }\n  });\n  each(items, function (item, i) {\n    if (!transitions[i]) {\n      transitions[i] = {\n        key: keys[i],\n        item: item,\n        phase: TransitionPhase.MOUNT,\n        ctrl: new Controller()\n      };\n      transitions[i].ctrl.item = item;\n    }\n  });\n\n  if (reused.length) {\n    var i = -1;\n\n    var _ref16 = propsFn ? propsFn() : props,\n        leave = _ref16.leave;\n\n    each(reused, function (keyIndex, prevIndex) {\n      var t = prevTransitions[prevIndex];\n\n      if (~keyIndex) {\n        i = transitions.indexOf(t);\n        transitions[i] = _extends({}, t, {\n          item: items[keyIndex]\n        });\n      } else if (leave) {\n        transitions.splice(++i, 0, t);\n      }\n    });\n  }\n\n  if (is.fun(sort)) {\n    transitions.sort(function (a, b) {\n      return sort(a.item, b.item);\n    });\n  }\n\n  var delay = -trail;\n  var forceUpdate = useForceUpdate();\n  var defaultProps = getDefaultProps(props);\n  var changes = new Map();\n  var exitingTransitions = useRef(new Map());\n  var forceChange = useRef(false);\n  each(transitions, function (t, i) {\n    var key = t.key;\n    var prevPhase = t.phase;\n    var p = propsFn ? propsFn() : props;\n    var to;\n    var phase;\n    var propsDelay = callProp(p.delay || 0, key);\n\n    if (prevPhase == TransitionPhase.MOUNT) {\n      to = p.enter;\n      phase = TransitionPhase.ENTER;\n    } else {\n      var isLeave = keys.indexOf(key) < 0;\n\n      if (prevPhase != TransitionPhase.LEAVE) {\n        if (isLeave) {\n          to = p.leave;\n          phase = TransitionPhase.LEAVE;\n        } else if (to = p.update) {\n          phase = TransitionPhase.UPDATE;\n        } else return;\n      } else if (!isLeave) {\n        to = p.enter;\n        phase = TransitionPhase.ENTER;\n      } else return;\n    }\n\n    to = callProp(to, t.item, i);\n    to = is.obj(to) ? inferTo(to) : {\n      to: to\n    };\n\n    if (!to.config) {\n      var _config2 = propsConfig || defaultProps.config;\n\n      to.config = callProp(_config2, t.item, i, phase);\n    }\n\n    delay += trail;\n\n    var payload = _extends({}, defaultProps, {\n      delay: propsDelay + delay,\n      ref: propsRef,\n      immediate: p.immediate,\n      reset: false\n    }, to);\n\n    if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n      var _p = propsFn ? propsFn() : props;\n\n      var from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n      payload.from = callProp(from, t.item, i);\n    }\n\n    var onResolve = payload.onResolve;\n\n    payload.onResolve = function (result) {\n      callProp(onResolve, result);\n      var transitions = usedTransitions.current;\n      var t = transitions.find(function (t) {\n        return t.key === key;\n      });\n      if (!t) return;\n\n      if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n        return;\n      }\n\n      if (t.ctrl.idle) {\n        var idle = transitions.every(function (t) {\n          return t.ctrl.idle;\n        });\n\n        if (t.phase == TransitionPhase.LEAVE) {\n          var expiry = callProp(expires, t.item);\n\n          if (expiry !== false) {\n            var expiryMs = expiry === true ? 0 : expiry;\n            t.expired = true;\n\n            if (!idle && expiryMs > 0) {\n              if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n              return;\n            }\n          }\n        }\n\n        if (idle && transitions.some(function (t) {\n          return t.expired;\n        })) {\n          exitingTransitions.current.delete(t);\n\n          if (exitBeforeEnter) {\n            forceChange.current = true;\n          }\n\n          forceUpdate();\n        }\n      }\n    };\n\n    var springs = getSprings(t.ctrl, payload);\n\n    if (phase === TransitionPhase.LEAVE && exitBeforeEnter) {\n      exitingTransitions.current.set(t, {\n        phase: phase,\n        springs: springs,\n        payload: payload\n      });\n    } else {\n      changes.set(t, {\n        phase: phase,\n        springs: springs,\n        payload: payload\n      });\n    }\n  });\n  var context = useContext(SpringContext);\n  var prevContext = usePrev(context);\n  var hasContext = context !== prevContext && hasProps(context);\n  useLayoutEffect(function () {\n    if (hasContext) {\n      each(transitions, function (t) {\n        t.ctrl.start({\n          default: context\n        });\n      });\n    }\n  }, [context]);\n  each(changes, function (_, t) {\n    if (exitingTransitions.current.size) {\n      var ind = transitions.findIndex(function (state) {\n        return state.key === t.key;\n      });\n      transitions.splice(ind, 1);\n    }\n  });\n  useLayoutEffect(function () {\n    each(exitingTransitions.current.size ? exitingTransitions.current : changes, function (_ref17, t) {\n      var phase = _ref17.phase,\n          payload = _ref17.payload;\n      var ctrl = t.ctrl;\n      t.phase = phase;\n      ref == null ? void 0 : ref.add(ctrl);\n\n      if (hasContext && phase == TransitionPhase.ENTER) {\n        ctrl.start({\n          default: context\n        });\n      }\n\n      if (payload) {\n        replaceRef(ctrl, payload.ref);\n\n        if (ctrl.ref && !forceChange.current) {\n          ctrl.update(payload);\n        } else {\n          ctrl.start(payload);\n\n          if (forceChange.current) {\n            forceChange.current = false;\n          }\n        }\n      }\n    });\n  }, reset ? void 0 : deps);\n\n  var renderTransitions = function renderTransitions(render) {\n    return React.createElement(React.Fragment, null, transitions.map(function (t, i) {\n      var _ref18 = changes.get(t) || t.ctrl,\n          springs = _ref18.springs;\n\n      var elem = render(_extends({}, springs), t.item, t, i);\n      return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n        key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n        ref: elem.ref\n      })) : elem;\n    }));\n  };\n\n  return ref ? [renderTransitions, ref] : renderTransitions;\n}\n\nvar nextKey = 1;\n\nfunction getKeys(items, _ref19, prevTransitions) {\n  var key = _ref19.key,\n      _ref19$keys = _ref19.keys,\n      keys = _ref19$keys === void 0 ? key : _ref19$keys;\n\n  if (keys === null) {\n    var reused = new Set();\n    return items.map(function (item) {\n      var t = prevTransitions && prevTransitions.find(function (t) {\n        return t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t);\n      });\n\n      if (t) {\n        reused.add(t);\n        return t.key;\n      }\n\n      return nextKey++;\n    });\n  }\n\n  return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nvar _excluded$2 = [\"children\"];\n\nfunction Spring(_ref) {\n  var children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n  return children(useSpring(props));\n}\n\nvar _excluded$1 = [\"items\", \"children\"];\n\nfunction Trail(_ref) {\n  var items = _ref.items,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n  var trails = useTrail(items.length, props);\n  return items.map(function (item, index) {\n    var result = children(item, index);\n    return is.fun(result) ? result(trails[index]) : result;\n  });\n}\n\nvar _excluded = [\"items\", \"children\"];\n\nfunction Transition(_ref) {\n  var items = _ref.items,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  return useTransition(items, props)(children);\n}\n\nvar Interpolation = /*#__PURE__*/function (_FrameValue2) {\n  _inherits(Interpolation, _FrameValue2);\n\n  var _super5 = _createSuper(Interpolation);\n\n  function Interpolation(source, args) {\n    var _this16;\n\n    _classCallCheck(this, Interpolation);\n\n    _this16 = _super5.call(this);\n    _this16.key = void 0;\n    _this16.idle = true;\n    _this16.calc = void 0;\n    _this16._active = new Set();\n    _this16.source = source;\n    _this16.calc = createInterpolator.apply(void 0, _toConsumableArray(args));\n\n    var value = _this16._get();\n\n    var nodeType = getAnimatedType(value);\n    setAnimated(_assertThisInitialized(_this16), nodeType.create(value));\n    return _this16;\n  }\n\n  _createClass(Interpolation, [{\n    key: \"advance\",\n    value: function advance(_dt) {\n      var value = this._get();\n\n      var oldValue = this.get();\n\n      if (!isEqual(value, oldValue)) {\n        getAnimated(this).setValue(value);\n\n        this._onChange(value, this.idle);\n      }\n\n      if (!this.idle && checkIdle(this._active)) {\n        becomeIdle(this);\n      }\n    }\n  }, {\n    key: \"_get\",\n    value: function _get() {\n      var inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n      return this.calc.apply(this, _toConsumableArray(inputs));\n    }\n  }, {\n    key: \"_start\",\n    value: function _start() {\n      var _this17 = this;\n\n      if (this.idle && !checkIdle(this._active)) {\n        this.idle = false;\n        each(getPayload(this), function (node) {\n          node.done = false;\n        });\n\n        if (Globals.skipAnimation) {\n          raf.batchedUpdates(function () {\n            return _this17.advance();\n          });\n          becomeIdle(this);\n        } else {\n          frameLoop.start(this);\n        }\n      }\n    }\n  }, {\n    key: \"_attach\",\n    value: function _attach() {\n      var _this18 = this;\n\n      var priority = 1;\n      each(toArray(this.source), function (source) {\n        if (hasFluidValue(source)) {\n          addFluidObserver(source, _this18);\n        }\n\n        if (isFrameValue(source)) {\n          if (!source.idle) {\n            _this18._active.add(source);\n          }\n\n          priority = Math.max(priority, source.priority + 1);\n        }\n      });\n      this.priority = priority;\n\n      this._start();\n    }\n  }, {\n    key: \"_detach\",\n    value: function _detach() {\n      var _this19 = this;\n\n      each(toArray(this.source), function (source) {\n        if (hasFluidValue(source)) {\n          removeFluidObserver(source, _this19);\n        }\n      });\n\n      this._active.clear();\n\n      becomeIdle(this);\n    }\n  }, {\n    key: \"eventObserved\",\n    value: function eventObserved(event) {\n      if (event.type == 'change') {\n        if (event.idle) {\n          this.advance();\n        } else {\n          this._active.add(event.parent);\n\n          this._start();\n        }\n      } else if (event.type == 'idle') {\n        this._active.delete(event.parent);\n      } else if (event.type == 'priority') {\n        this.priority = toArray(this.source).reduce(function (highest, parent) {\n          return Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1);\n        }, 0);\n      }\n    }\n  }]);\n\n  return Interpolation;\n}(FrameValue);\n\nfunction isIdle(source) {\n  return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n  return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n  if (!self.idle) {\n    self.idle = true;\n    each(getPayload(self), function (node) {\n      node.done = true;\n    });\n    callFluidObservers(self, {\n      type: 'idle',\n      parent: self\n    });\n  }\n}\n\nvar to = function to(source) {\n  for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n    args[_key6 - 1] = arguments[_key6];\n  }\n\n  return new Interpolation(source, args);\n};\n\nvar interpolate = function interpolate(source) {\n  for (var _len7 = arguments.length, args = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n    args[_key7 - 1] = arguments[_key7];\n  }\n\n  return deprecateInterpolate(), new Interpolation(source, args);\n};\n\nGlobals.assign({\n  createStringInterpolator: createStringInterpolator,\n  to: function to(source, args) {\n    return new Interpolation(source, args);\n  }\n});\nvar update = frameLoop.advance;\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, easings, inferTo, interpolate, to, update, useChain, useSpring, useSpringRef, useSprings, useTrail, useTransition };","import _slicedToArray from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";\nimport _createClass from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/createClass.js\";\nimport _classCallCheck from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\";\nimport _inherits from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/inherits.js\";\nimport _possibleConstructorReturn from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\";\nimport _getPrototypeOf from \"/codebuild/output/src3414018106/src/sp-website/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\";\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 _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\nimport { Globals } from '@react-spring/core';\nexport * from '@react-spring/core';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { eachProp, is, toArray, FluidValue, each, getFluidValue, hasFluidValue, addFluidObserver, removeFluidObserver, callFluidObservers, createStringInterpolator, colors } from '@react-spring/shared';\nimport { AnimatedObject, createHost } from '@react-spring/animated';\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\nvar _excluded$2 = [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"];\nvar isCustomPropRE = /^--/;\n\nfunction dangerousStyleValue(name, value) {\n  if (value == null || typeof value === 'boolean' || value === '') return '';\n  if (typeof value === 'number' && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px';\n  return ('' + value).trim();\n}\n\nvar attributeCache = {};\n\nfunction applyAnimatedValues(instance, props) {\n  if (!instance.nodeType || !instance.setAttribute) {\n    return false;\n  }\n\n  var isFilterElement = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n\n  var _ref = props,\n      style = _ref.style,\n      children = _ref.children,\n      scrollTop = _ref.scrollTop,\n      scrollLeft = _ref.scrollLeft,\n      attributes = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n  var values = Object.values(attributes);\n  var names = Object.keys(attributes).map(function (name) {\n    return isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, function (n) {\n      return '-' + n.toLowerCase();\n    }));\n  });\n\n  if (children !== void 0) {\n    instance.textContent = children;\n  }\n\n  for (var name in style) {\n    if (style.hasOwnProperty(name)) {\n      var value = dangerousStyleValue(name, style[name]);\n\n      if (isCustomPropRE.test(name)) {\n        instance.style.setProperty(name, value);\n      } else {\n        instance.style[name] = value;\n      }\n    }\n  }\n\n  names.forEach(function (name, i) {\n    instance.setAttribute(name, values[i]);\n  });\n\n  if (scrollTop !== void 0) {\n    instance.scrollTop = scrollTop;\n  }\n\n  if (scrollLeft !== void 0) {\n    instance.scrollLeft = scrollLeft;\n  }\n}\n\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n\nvar prefixKey = function prefixKey(prefix, key) {\n  return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n};\n\nvar prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce(function (acc, prop) {\n  prefixes.forEach(function (prefix) {\n    return acc[prefixKey(prefix, prop)] = acc[prop];\n  });\n  return acc;\n}, isUnitlessNumber);\nvar _excluded$1 = [\"x\", \"y\", \"z\"];\nvar domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nvar pxTransforms = /^(translate)/;\nvar degTransforms = /^(rotate|skew)/;\n\nvar addUnit = function addUnit(value, unit) {\n  return is.num(value) && value !== 0 ? value + unit : value;\n};\n\nvar isValueIdentity = function isValueIdentity(value, id) {\n  return is.arr(value) ? value.every(function (v) {\n    return isValueIdentity(v, id);\n  }) : is.num(value) ? value === id : parseFloat(value) === id;\n};\n\nvar AnimatedStyle = /*#__PURE__*/function (_AnimatedObject) {\n  _inherits(AnimatedStyle, _AnimatedObject);\n\n  var _super = _createSuper(AnimatedStyle);\n\n  function AnimatedStyle(_ref) {\n    _classCallCheck(this, AnimatedStyle);\n\n    var x = _ref.x,\n        y = _ref.y,\n        z = _ref.z,\n        style = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n    var inputs = [];\n    var transforms = [];\n\n    if (x || y || z) {\n      inputs.push([x || 0, y || 0, z || 0]);\n      transforms.push(function (xyz) {\n        return [\"translate3d(\".concat(xyz.map(function (v) {\n          return addUnit(v, 'px');\n        }).join(','), \")\"), isValueIdentity(xyz, 0)];\n      });\n    }\n\n    eachProp(style, function (value, key) {\n      if (key === 'transform') {\n        inputs.push([value || '']);\n        transforms.push(function (transform) {\n          return [transform, transform === ''];\n        });\n      } else if (domTransforms.test(key)) {\n        delete style[key];\n        if (is.und(value)) return;\n        var unit = pxTransforms.test(key) ? 'px' : degTransforms.test(key) ? 'deg' : '';\n        inputs.push(toArray(value));\n        transforms.push(key === 'rotate3d' ? function (_ref2) {\n          var _ref3 = _slicedToArray(_ref2, 4),\n              x = _ref3[0],\n              y = _ref3[1],\n              z = _ref3[2],\n              deg = _ref3[3];\n\n          return [\"rotate3d(\".concat(x, \",\").concat(y, \",\").concat(z, \",\").concat(addUnit(deg, unit), \")\"), isValueIdentity(deg, 0)];\n        } : function (input) {\n          return [\"\".concat(key, \"(\").concat(input.map(function (v) {\n            return addUnit(v, unit);\n          }).join(','), \")\"), isValueIdentity(input, key.startsWith('scale') ? 1 : 0)];\n        });\n      }\n    });\n\n    if (inputs.length) {\n      style.transform = new FluidTransform(inputs, transforms);\n    }\n\n    return _super.call(this, style);\n  }\n\n  return _createClass(AnimatedStyle);\n}(AnimatedObject);\n\nvar FluidTransform = /*#__PURE__*/function (_FluidValue) {\n  _inherits(FluidTransform, _FluidValue);\n\n  var _super2 = _createSuper(FluidTransform);\n\n  function FluidTransform(inputs, transforms) {\n    var _this;\n\n    _classCallCheck(this, FluidTransform);\n\n    _this = _super2.call(this);\n    _this._value = null;\n    _this.inputs = inputs;\n    _this.transforms = transforms;\n    return _this;\n  }\n\n  _createClass(FluidTransform, [{\n    key: \"get\",\n    value: function get() {\n      return this._value || (this._value = this._get());\n    }\n  }, {\n    key: \"_get\",\n    value: function _get() {\n      var _this2 = this;\n\n      var transform = '';\n      var identity = true;\n      each(this.inputs, function (input, i) {\n        var arg1 = getFluidValue(input[0]);\n\n        var _this2$transforms$i = _this2.transforms[i](is.arr(arg1) ? arg1 : input.map(getFluidValue)),\n            _this2$transforms$i2 = _slicedToArray(_this2$transforms$i, 2),\n            t = _this2$transforms$i2[0],\n            id = _this2$transforms$i2[1];\n\n        transform += ' ' + t;\n        identity = identity && id;\n      });\n      return identity ? 'none' : transform;\n    }\n  }, {\n    key: \"observerAdded\",\n    value: function observerAdded(count) {\n      var _this3 = this;\n\n      if (count == 1) each(this.inputs, function (input) {\n        return each(input, function (value) {\n          return hasFluidValue(value) && addFluidObserver(value, _this3);\n        });\n      });\n    }\n  }, {\n    key: \"observerRemoved\",\n    value: function observerRemoved(count) {\n      var _this4 = this;\n\n      if (count == 0) each(this.inputs, function (input) {\n        return each(input, function (value) {\n          return hasFluidValue(value) && removeFluidObserver(value, _this4);\n        });\n      });\n    }\n  }, {\n    key: \"eventObserved\",\n    value: function eventObserved(event) {\n      if (event.type == 'change') {\n        this._value = null;\n      }\n\n      callFluidObservers(this, event);\n    }\n  }]);\n\n  return FluidTransform;\n}(FluidValue);\n\nvar primitives = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\nvar _excluded = [\"scrollTop\", \"scrollLeft\"];\nGlobals.assign({\n  batchedUpdates: unstable_batchedUpdates,\n  createStringInterpolator: createStringInterpolator,\n  colors: colors\n});\nvar host = createHost(primitives, {\n  applyAnimatedValues: applyAnimatedValues,\n  createAnimatedStyle: function createAnimatedStyle(style) {\n    return new AnimatedStyle(style);\n  },\n  getComponentProps: function getComponentProps(_ref) {\n    var props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n    return props;\n  }\n});\nvar animated = host.animated;\nexport { animated as a, animated };","import React, {\n  ReactNode,\n  useCallback,\n  useEffect,\n  useMemo,\n  useState,\n} from 'react';\nimport useMeasure from '../../hooks/useMeasure';\nimport { useSpring, animated, SpringRef } from 'react-spring';\nimport { usePrevious } from '../../hooks/usePrevious';\n\nexport type MainMenuDropdownProps = {\n  children: ReactNode;\n  active?: boolean;\n  animationRef?: SpringRef<any>;\n};\n\nexport function MainMenuDropdown({\n  children,\n  active = false,\n  animationRef,\n}: MainMenuDropdownProps) {\n  const [measureRef, measurements] = useMeasure<HTMLDivElement>();\n  const [windowHeight, setWindowHeight] = useState(0);\n  const [scrollbarWidth, setScrollbarWidth] = useState(0);\n\n  const layout = useCallback(() => {\n    setWindowHeight(window.innerHeight);\n  }, []);\n\n  useEffect(() => {\n    window.addEventListener('resize', layout);\n    setScrollbarWidth((window as any).scrollbarWidth);\n\n    return () => {\n      window.removeEventListener('resize', layout);\n    };\n  }, []);\n\n  const height = measurements.size.height;\n\n  const [styles, ref] = useSpring(\n    {\n      from: {\n        height: 0,\n        overflowY: 'hidden',\n      },\n      to: active\n        ? [\n            {\n              height: height,\n              overflowY: 'hidden',\n            },\n            {\n              overflowY: height > windowHeight * 0.7 ? 'scroll' : 'hidden',\n            },\n          ]\n        : [{ overflowY: 'hidden' }, { height: 0 }],\n      ref: animationRef,\n    },\n    [active, height, windowHeight]\n  );\n\n  return (\n    <animated.div\n      style={{\n        ...styles,\n        paddingRight: styles.overflowY.to((val) =>\n          val === 'scroll' ? 0 : scrollbarWidth\n        ),\n      }}\n      className=\"fixed inset-x-0 top-14 max-h-[80vh] z-40 bg-slate-100 dark:bg-slate-900 overflow-hidden\"\n    >\n      <div ref={measureRef} className=\"container m-auto\">\n        <div className=\"sm:px-8 px-4\">{children}</div>\n      </div>\n    </animated.div>\n  );\n}\n\nexport default MainMenuDropdown;\n","import React, { ReactNode } from 'react';\nimport Link from '../../link/Link';\n\nexport type MainMenuDropdownItemProps = {\n  icon: ReactNode;\n  title: string;\n  subtitle?: string;\n  to?: string;\n};\n\nexport function MainMenuDropdownItem({\n  icon,\n  title,\n  subtitle,\n  to,\n}: MainMenuDropdownItemProps) {\n  return (\n    <Link to={to} className=\"cursor-pointer flex items-center mb-5 group\">\n      <div className=\"w-12 h-12 p-2 mr-6 shrink-0 bg-slate-300 group-hover:bg-slate-400 dark:bg-slate-800 dark:group-hover:bg-slate-700 rounded-lg transition-colors\">\n        {icon}\n      </div>\n      <div className=\"\">\n        <div className=\"text-slate-700 group-hover:text-slate-900 dark:text-white dark:group-hover:text-white font-medium tracking-wide transition-colors\">\n          {title}\n        </div>\n        <div className=\"text-slate-400 group-hover:text-slate-500 dark:text-slate-500 text-sm dark:group-hover:text-slate-400 transition-colors\">\n          {subtitle}\n        </div>\n      </div>\n    </Link>\n  );\n}\n\nexport default MainMenuDropdownItem;\n","import React from 'react';\nimport { animated, SpringRef, useSpring, useTrail } from 'react-spring';\nimport makePath from '../../../helpers/makePath';\nimport useCategoryTree, {\n  StrapiCategory,\n} from '../../../hooks/useCategoryTree';\nimport { useLocale } from '../../../hooks/useLocale';\nimport { usePrevious } from '../../../hooks/usePrevious';\nimport StrapiImage from '../../images/StrapiImage';\nimport Link from '../../link/Link';\nimport MainMenuDropdownItem from './MainMenuDropdownItem';\n\nexport type MainMenuCategoryDropdownProps = {\n  categoryId: number;\n  active?: boolean;\n  submenuVisible?: boolean;\n  animationRef?: SpringRef<any>;\n};\n\nexport function MainMenuCategoryDropdown({\n  categoryId,\n  active = false,\n  submenuVisible = false,\n  animationRef,\n}: MainMenuCategoryDropdownProps) {\n  const locale = useLocale();\n  const categories = useCategoryTree(locale, categoryId);\n  const rootCategory = categories.find((cat) => cat.strapi_id === categoryId);\n\n  let rootItems: any[] = [\n    ...rootCategory.children.map((item) => ({ ...item, type: 'category' })),\n    ...rootCategory.strapiPages.map((item) => ({ ...item, type: 'page' })),\n  ].sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n\n  rootItems = rootItems.map((item) => {\n    let children = [];\n\n    if (item.type === 'category') {\n      children = [\n        ...((item as any).children ?? []).map((item) => ({\n          ...item,\n          type: 'category',\n        })),\n        ...((item as any).strapiPages ?? []).map((item) => ({\n          ...item,\n          type: 'page',\n        })),\n      ].sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n    }\n\n    item.subitems = children;\n\n    return item;\n  });\n\n  const totalItems: number = rootItems\n    .flatMap((item) => 1 + item.subitems.length)\n    .reduce((a, b) => a + b, 0);\n\n  const trail = useTrail(totalItems, {\n    from: { opacity: 0 },\n    to: { opacity: active ? 1 : 0 },\n    config: { duration: 1000 / totalItems },\n    reset: true,\n  });\n\n  const hasChildren =\n    rootCategory.children.length + rootCategory.pages.length > 0;\n\n  const containerSyles = useSpring({\n    from: { display: 'none', opacity: 0 },\n    to: active\n      ? { display: 'grid', opacity: 1 }\n      : submenuVisible\n      ? { display: 'none', opacity: 0 }\n      : [{ opacity: 0 }, { display: 'none' }],\n    immediate: () => (submenuVisible ? true : false),\n    reset: true,\n    ref: animationRef,\n  });\n\n  if (!hasChildren) return null;\n\n  let i = -1;\n\n  return (\n    <animated.div\n      style={containerSyles}\n      className={`grid grid-cols-3 gap-6 py-10`}\n    >\n      {rootItems.map((item) => {\n        i++;\n        return (\n          <div className=\"\" key={item.strapi_id}>\n            <animated.div style={trail[i]}>\n              <Link\n                to={makePath(item.locale, item.slug)}\n                className=\"block mb-5 uppercase text-slate-400 hover:text-slate-600 dark:text-slate-400 dark:hover:text-slate-200 tracking-wider font-medium\"\n              >\n                {item.title}\n              </Link>\n            </animated.div>\n            {item.subitems.map((child) => {\n              i++;\n              return (\n                <animated.div style={trail[i]} key={child.strapi_id}>\n                  <MainMenuDropdownItem\n                    to={makePath(child.locale, child.slug)}\n                    icon={\n                      <StrapiImage\n                        image={child.icon}\n                        className=\"brightness-0 dark:invert\"\n                      />\n                    }\n                    title={child.title}\n                    subtitle={child.excerpt}\n                  />\n                </animated.div>\n              );\n            })}\n          </div>\n        );\n      })}\n    </animated.div>\n  );\n}\n\nexport default MainMenuCategoryDropdown;\n","import React, { useEffect } from 'react';\nimport { useCallback } from 'react';\nimport { useState } from 'react';\nimport { useLocale } from '../../hooks/useLocale';\nimport useMainMenu from '../../hooks/useMainMenu';\nimport MainMenuCategoryItem from './items/MainMenuCategoryItem';\nimport { useLocation } from '@reach/router';\nimport Overlay from '../drawer/Overlay';\nimport MainMenuItem from './MainMenuItem';\nimport MainMenuDropdown from './MainMenuDropdown';\nimport MainMenuCategoryDropdown from './dropdowns/MainMenuCategoryDropdown';\nimport useMeasure from '../../hooks/useMeasure';\nimport {\n  useChain,\n  useSpringRef,\n  useSprings,\n  useTransition,\n  animated,\n} from 'react-spring';\nimport { PrefetchContext } from '../link/Link';\n\nexport type MainMenuProps = {};\n\nexport default function MainMenu({}: MainMenuProps) {\n  const locale = useLocale();\n  const mainMenu = useMainMenu(locale);\n  const location = useLocation();\n\n  const [activeSubmenu, setActiveSubmenu] = useState(null);\n\n  useEffect(() => {\n    setActiveSubmenu(null);\n  }, [location]);\n\n  return (\n    <PrefetchContext.Provider value=\"hover\">\n      <nav\n        className={`navigation hidden md:flex relative justify-center items-center`}\n      >\n        {mainMenu.map((item, idx) => {\n          if (item.strapi_component === 'menu.category-tree') {\n            return (\n              <MainMenuCategoryItem\n                key={`ct${item.category.strapi_id}`}\n                categoryId={item.category.strapi_id}\n                active={\n                  activeSubmenu === `category_tree_${item.category.strapi_id}`\n                }\n                onActivate={(id) =>\n                  setActiveSubmenu(id ? `category_tree_${id}` : null)\n                }\n              />\n            );\n          } else if (item.strapi_component === 'menu.external-link') {\n            return (\n              <MainMenuItem\n                key={`ct${item.link}`}\n                to={item.link}\n                onMouseEnter={() => setActiveSubmenu(null)}\n              >\n                {item.title}\n              </MainMenuItem>\n            );\n          }\n\n          // Unknown component\n          return null;\n        })}\n      </nav>\n      <MainMenuDropdown active={activeSubmenu !== null}>\n        {mainMenu.map((item, idx) => {\n          if (item.strapi_component === 'menu.category-tree') {\n            return (\n              <MainMenuCategoryDropdown\n                key={`ct${item.category.strapi_id}`}\n                active={\n                  activeSubmenu === `category_tree_${item.category.strapi_id}`\n                }\n                submenuVisible={activeSubmenu !== null}\n                categoryId={item.category.strapi_id}\n              />\n            );\n          }\n\n          // Unknown component\n          return null;\n        })}\n      </MainMenuDropdown>\n      <Overlay\n        onClick={() => setActiveSubmenu(null)}\n        onMouseEnter={() => setActiveSubmenu(null)}\n        visible={activeSubmenu !== null}\n        keepHeader\n      />\n    </PrefetchContext.Provider>\n  );\n}\n","import { useEffect, useRef, useState } from \"react\";\n\nexport default function useDelayed<T>(value: T, delay: number) {\n    const [delayedValue, setDelayedValue] = useState<T>(value);\n    const timer = useRef<number>();\n\n    useEffect(() => {\n        if(timer.current) window.clearTimeout(timer.current);\n        timer.current = window.setTimeout(() => {\n            setDelayedValue(value);\n        }, delay);\n    }, [value]);\n\n    return delayedValue;\n}","import { delay } from 'lodash';\nimport React, {\n  forwardRef,\n  ReactNode,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from 'react';\nimport useDelayed from '../../hooks/useDelayed';\nimport useMeasure from '../../hooks/useMeasure';\nimport useMultiRef from '../../hooks/useMultiRef';\nimport Overlay from './Overlay';\n\nexport type DrawerProps = {\n  open?: boolean;\n  keepHeader?: boolean;\n  children?: ReactNode;\n  className?: string;\n};\n\nconst Drawer = forwardRef<HTMLDivElement, DrawerProps>(\n  (\n    { open = false, keepHeader = false, children, className = '' }: DrawerProps,\n    forwardedRef\n  ) => {\n    const [measureRef, measurements] = useMeasure<HTMLDivElement>();\n    const delayedOpen = useDelayed(open, 500);\n\n    const ref = useMultiRef([measureRef, forwardedRef]);\n\n    return (\n      <Overlay visible={open} keepHeader={keepHeader}>\n        <div\n          ref={ref}\n          style={{\n            transform: `translateX(${open ? 0 : measurements.size.width}px)`,\n          }}\n          className={`absolute inset-y-0 right-0 max-w-full overflow-hidden shadow-2xl transition-transform duration-500 ${\n            open || delayedOpen ? '' : 'invisible'\n          } ${className}`}\n        >\n          {children}\n        </div>\n      </Overlay>\n    );\n  }\n);\n\nexport default Drawer;\n","import { MutableRefObject, RefCallback, useCallback } from \"react\";\n\nexport default function useMultiRef<T>(refs: (RefCallback<T>|MutableRefObject<T>)[]) {\n    const setMainRef = useCallback((val: T) => {\n        refs.forEach((ref) => {\n            if(typeof ref === 'function') {\n                ref(val);\n            } else if(typeof ref === 'object' && ref !== null) {\n                (ref as MutableRefObject<T>).current = val;\n            }\n        });\n    }, [refs]);\n\n    return setMainRef;\n}","import { faChevronLeft, faChevronRight } from \"@fortawesome/pro-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { ReactNode } from \"react\";\nimport Link from \"../../link/Link\";\n\nexport type MobileMenuItemProps = {\n    children: ReactNode,\n    isHeader?: boolean,\n    isBack?: boolean,\n    hasChildren?: boolean,\n    onClick?: () => void,\n    to?: string;\n};\n\nexport default function MobileMenuItem({\n    children,\n    hasChildren = false,\n    isHeader = false,\n    isBack = false,\n    to,\n    onClick\n}: MobileMenuItemProps) {\n\n    const commonStyles = `flex h-12 border-b ${isHeader ? 'font-bold uppercase bg-slate-200 dark:bg-slate-900 border-slate-200 border-slate-300 dark:border-slate-700' : 'border-slate-200 dark:border-slate-700'}`;\n    const hoverStyles = `${isHeader ? 'hover:bg-slate-300 dark:hover:bg-slate-700' : 'hover:bg-slate-100 dark:hover:bg-slate-600'}`;\n    const commonArrowStyles = `flex-shrink-0 cursor-pointer ${hoverStyles} flex items-center justify-center w-12 border-r ${isHeader ? 'border-slate-300 dark:border-slate-800' : 'border-slate-200 dark:border-slate-700'}`\n\n    if(isBack) {\n        return <div className={`${commonStyles}`}>\n            <div onClick={onClick} className={`${commonArrowStyles} border-r`}>\n                <FontAwesomeIcon icon={faChevronLeft} />\n            </div>\n            <Link to={to} className={`px-4 flex flex-grow items-center ${hoverStyles}`}>{children}</Link>\n        </div>;\n    }\n\n    if(hasChildren && onClick) {\n        return <div className={`${commonStyles}`}>\n            <Link to={to} className={`px-4 flex flex-grow items-center ${hoverStyles}`}>{children}</Link>\n            <div onClick={onClick} className={`${commonArrowStyles} border-l`}>\n                <FontAwesomeIcon icon={faChevronRight} />\n            </div>\n        </div>;\n    }\n\n    return (\n        <Link to={to} className={`${commonStyles} ${hoverStyles} px-4 items-center`}>{children}</Link>\n    );\n}","import { faChevronRight } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React from 'react';\nimport makePath from '../../../helpers/makePath';\nimport useCategoryTree, {\n  StrapiCategory,\n} from '../../../hooks/useCategoryTree';\nimport { useLocale } from '../../../hooks/useLocale';\nimport CollapseItem from '../../collapse/CollapseItem';\nimport MobileMenuItem from './MobileMenuItem';\n\nexport type MobileMenuRootItemProps = {\n  categoryId: number;\n  onSelectSubCategory: (selected: StrapiCategory) => void;\n};\n\nexport default function MobileMenuRootItem({\n  categoryId,\n  onSelectSubCategory,\n}: MobileMenuRootItemProps) {\n  const locale = useLocale();\n  const categories = useCategoryTree(locale, categoryId);\n\n  const rootCategory = categories.find((cat) => cat.strapi_id === categoryId);\n  const rootItems = [\n    ...rootCategory.children.map((item) => ({ ...item, type: 'category' })),\n    ...rootCategory.strapiPages.map((item) => ({ ...item, type: 'page' })),\n  ].sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n\n  return (\n    <div className=\"\">\n      <MobileMenuItem\n        isHeader\n        to={makePath(rootCategory.locale, rootCategory.slug)}\n      >\n        {rootCategory.title}\n      </MobileMenuItem>\n      {rootItems.map((item) => {\n        const hasChildren =\n          item.type === 'category' &&\n          (item as any).children.length + (item as any).strapiPages.length > 0;\n        return (\n          <MobileMenuItem\n            onClick={() => {\n              item.type === 'category' && onSelectSubCategory(item as any);\n            }}\n            key={item.strapi_id}\n            hasChildren={hasChildren}\n            to={makePath(item.locale, item.slug)}\n          >\n            {item.title}\n          </MobileMenuItem>\n        );\n      })}\n    </div>\n  );\n}\n","import React, {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from 'react';\nimport makePath from '../../../helpers/makePath';\nimport { StrapiCategory } from '../../../hooks/useCategoryTree';\nimport useDelayed from '../../../hooks/useDelayed';\nimport { useLocale } from '../../../hooks/useLocale';\nimport useMainMenu from '../../../hooks/useMainMenu';\nimport CollapseItem from '../../collapse/CollapseItem';\nimport Drawer from '../../drawer/Drawer';\nimport { PrefetchContext } from '../../link/Link';\nimport MobileMenuItem from './MobileMenuItem';\nimport MobileMenuRootItem from './MobileMenuRootItem';\n\nexport type MobileMenuProps = {\n  open: boolean;\n};\n\nexport const MobileMenu = forwardRef<HTMLDivElement, MobileMenuProps>(\n  ({ open }, ref) => {\n    const locale = useLocale();\n    const mainMenu = useMainMenu(locale);\n\n    const [selectedSub, setSelectedSub] = useState<StrapiCategory>(null);\n    const [showSub, setShowSub] = useState<boolean>(false);\n    const delayedOpen = useDelayed(open, 500);\n\n    const timerRef = useRef<number>();\n\n    const setSub = useCallback(\n      (sub: StrapiCategory) => {\n        if (selectedSub === sub) return;\n        window.clearTimeout(timerRef.current);\n        if (sub) {\n          setSelectedSub(sub);\n          setShowSub(true);\n        } else {\n          setShowSub(false);\n          timerRef.current = window.setTimeout(() => {\n            setSelectedSub(null);\n          }, 500);\n        }\n      },\n      [selectedSub]\n    );\n\n    useEffect(() => {\n      if (!delayedOpen) {\n        setShowSub(false);\n        setSelectedSub(null);\n      }\n    }, [delayedOpen]);\n\n    const subItems = selectedSub\n      ? [\n          ...selectedSub.children.map((item) => ({\n            ...item,\n            type: 'category',\n          })),\n          ...selectedSub.strapiPages.map((item) => ({ ...item, type: 'page' })),\n        ].sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0))\n      : [];\n\n    return (\n      <Drawer\n        ref={ref}\n        open={open}\n        keepHeader\n        className=\"w-80 flex bg-white dark:bg-slate-800 text-slate-700 dark:text-white border-t border-slate-700 border-l\"\n      >\n        <PrefetchContext.Provider value=\"hover\">\n          <div\n            style={{\n              width: '40rem',\n              transform: `translate(${showSub ? -20 : 0}rem, 0)`,\n            }}\n            className=\"flex transition-transform duration-300\"\n          >\n            <div className=\"w-80 overflow-y-auto\">\n              {mainMenu.map((item, idx) => {\n                if (item.strapi_component === 'menu.category-tree') {\n                  return (\n                    <MobileMenuRootItem\n                      onSelectSubCategory={(cat) => setSub(cat)}\n                      key={item.category.strapi_id}\n                      categoryId={item.category.strapi_id}\n                    />\n                  );\n                } else if (item.strapi_component === 'menu.external-link') {\n                  return (\n                    <MobileMenuItem isHeader to={item.link} key={item.link}>\n                      {item.title}\n                    </MobileMenuItem>\n                  );\n                }\n\n                // Unknown component\n                return null;\n              })}\n            </div>\n            <div className=\"w-80 overflow-y-auto\">\n              {selectedSub && (\n                <>\n                  <MobileMenuItem\n                    isBack\n                    isHeader\n                    onClick={() => setSub(null)}\n                    to={makePath(selectedSub.locale, selectedSub.slug)}\n                  >\n                    {selectedSub.title}\n                  </MobileMenuItem>\n                  {subItems.map((item) => (\n                    <MobileMenuItem\n                      to={makePath(item.locale, item.slug)}\n                      key={item.strapi_id}\n                    >\n                      {item.title}\n                    </MobileMenuItem>\n                  ))}\n                </>\n              )}\n            </div>\n          </div>\n        </PrefetchContext.Provider>\n      </Drawer>\n    );\n  }\n);\n","import { faBars, faTimes } from \"@fortawesome/pro-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React from \"react\";\n\nexport type MobileMenuTriggerProps = {\n    className?: string;\n    open?: boolean;\n    onClick?: () => void;\n};\n\nexport default function MobileMenuTrigger({\n    className = '',\n    open = false,\n    onClick\n}: MobileMenuTriggerProps) {\n    return (\n        <div onClick={onClick} className={`flex items-center justify-center w-14 cursor-pointer hover:bg-slate-800 ${className}`}>\n            <FontAwesomeIcon icon={open ? faTimes : faBars} className=\"text-3xl\" />\n        </div>\n    );\n}","import React from 'react';\nimport { StrapiApiImage } from '../images/StrapiImage';\nimport Helmet from 'react-helmet';\nimport { LanguageSwitcherItemProps } from '../language-switcher/LanguageSwitcherItem';\nimport { getBaseUrl, makeAbsolute } from '../../helpers/makePath';\nimport { graphql } from 'gatsby';\n\nexport type SiteMetaProps = {\n  title: string;\n  description: string;\n  socialTitle?: string;\n  socialDescription?: string;\n  socialImage?: StrapiApiImage;\n  locale?: string;\n  slug?: string;\n  availableLocales?: LanguageSwitcherItemProps[];\n};\n\nexport default function SiteMeta({\n  title,\n  description,\n  socialTitle,\n  socialDescription,\n  socialImage,\n  locale = 'en',\n  slug = '/',\n  availableLocales = [],\n}: SiteMetaProps) {\n  //TODO: Add locales without region (https://developers.google.com/search/docs/advanced/crawling/localized-versions?hl=de)\n\n  return (\n    <Helmet htmlAttributes={{ lang: locale }}>\n      <title>{title}</title>\n      <meta name=\"description\" content={description} />\n\n      <link\n        rel=\"alternate\"\n        href={makeAbsolute(locale, slug)}\n        hrefLang={locale}\n      />\n      {availableLocales.map((locale) => (\n        <link\n          key={`${locale.locale}${locale.slug}`}\n          rel=\"alternate\"\n          href={makeAbsolute(locale.locale, locale.slug)}\n          hrefLang={locale.locale}\n        />\n      ))}\n      <link rel=\"alternate\" href={getBaseUrl()} hrefLang=\"x-default\" />\n\n      <meta property=\"og:type\" content=\"website\" />\n      <meta property=\"og:site_name\" content=\"Signature Products GmbH\" />\n      <meta property=\"og:title\" content={socialTitle ?? title} />\n      <meta\n        property=\"og:description\"\n        content={socialDescription ?? description}\n      />\n      {socialImage && (\n        <meta\n          property=\"og:image\"\n          content={`${getBaseUrl()}${socialImage.localFile.publicURL}`}\n        />\n      )}\n      <meta property=\"og:url\" content={makeAbsolute(locale, slug)} />\n      <meta property=\"og:locale\" content={locale.replace('-', '_')} />\n      {availableLocales.map((locale) => (\n        <meta\n          key={locale.locale}\n          property=\"og:locale:alternate\"\n          content={locale.locale.replace('-', '_')}\n        />\n      ))}\n\n      <meta name=\"twitter:title\" content={socialTitle ?? title} />\n      <meta\n        name=\"twitter:description\"\n        content={socialDescription ?? description}\n      />\n      {socialImage && (\n        <meta\n          name=\"twitter:image\"\n          content={`${getBaseUrl()}${socialImage.localFile.publicURL}`}\n        />\n      )}\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n    </Helmet>\n  );\n}\n\nexport const query = graphql`\n  fragment SiteMeta on STRAPI__COMPONENT_PAGE_SITE_META {\n    title\n    description\n    socialTitle\n    socialDescription\n    socialImage {\n      localFile {\n        publicURL\n      }\n    }\n  }\n`;\n","import { graphql, PageProps } from 'gatsby';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useLocale } from '../../hooks/useLocale';\nimport useOutsideClick from '../../hooks/useOutsideClick';\nimport Drawer from '../drawer/Drawer';\nimport Logo from '../images/Logo';\nimport LanguageSwitcher from '../language-switcher/LanguageSwitcher';\nimport { LanguageSwitcherItemProps } from '../language-switcher/LanguageSwitcherItem';\nimport Link, { PrefetchContext } from '../link/Link';\nimport MainMenu from '../main-menu/MainMenu';\nimport { MobileMenu } from '../main-menu/mobile-menu/MobileMenu';\nimport MobileMenuTrigger from '../main-menu/mobile-menu/MobileMenuTrigger';\nimport { useLocation } from '@reach/router';\nimport SiteMeta, { SiteMetaProps } from '../meta/SiteMeta';\nimport { slugify } from '../../helpers/makePath';\n\nexport type HeaderProps = Omit<PageProps<any, any>, 'children'>;\n\nexport default function Header({ data }: HeaderProps) {\n  const location = useLocation();\n  const locale = useLocale();\n  const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n  const headerRef = useRef();\n\n  const mobileMenuRef = useOutsideClick(\n    () => {\n      setMobileMenuOpen(false);\n    },\n    { ignore: [headerRef] }\n  );\n\n  useEffect(() => {\n    setMobileMenuOpen(false);\n  }, [location]);\n\n  let availableLocales: LanguageSwitcherItemProps[] = [];\n  let siteMeta: SiteMetaProps = {\n    title: 'Signature Products GmbH',\n    description: '',\n  };\n  let slug: string = '/';\n\n  if (data?.strapiPage) {\n    availableLocales =\n      data.strapiPage?.localizations?.data?.map(\n        (node: any) => node.attributes\n      ) ?? [];\n    siteMeta = data.strapiPage?.meta ?? {\n      title: data.strapiPage.title,\n      description: data.strapiPage.excerpt,\n    };\n    slug = data.strapiPage.slug;\n  }\n  if (data?.strapiCategory) {\n    availableLocales =\n      data.strapiCategory?.localizations?.data?.map(\n        (node: any) => node.attributes\n      ) ?? [];\n    siteMeta = data.strapiCategory?.meta ?? {\n      title: data.strapiCategory.title,\n      description: data.strapiCategory.excerpt,\n    };\n    slug = data.strapiCategory.slug;\n  }\n  if (data?.allStrapiJobOffer) {\n    const offer = data.allStrapiJobOffer.nodes[0];\n    availableLocales =\n      offer?.localizations?.data?.map((node: any) => ({\n        locale: node.attributes.locale,\n        slug: slugify(node.attributes.title),\n      })) ?? [];\n    siteMeta = offer?.siteMeta ?? {\n      title: offer.title,\n      description: offer.excerpt,\n    };\n    slug = slugify(offer.title);\n  }\n\n  siteMeta.availableLocales = availableLocales;\n  siteMeta.locale = locale;\n  siteMeta.slug = slug;\n\n  return (\n    <PrefetchContext.Provider value=\"hover\">\n      <header\n        ref={headerRef}\n        className=\"fixed z-40 top-0 inset-x-0 shadow-md border-b border-slate-900 transform-gpu\"\n      >\n        <div className=\"bg-black text-white\">\n          <div className={`container m-auto flex justify-between h-14`}>\n            <div className=\"sm:px-8 px-4 flex justify-center items-center\">\n              <Link to={`/${locale ?? ''}`}>\n                <Logo colour=\"negative\" className=\"h-9 w-32\" loading=\"eager\" />\n              </Link>\n            </div>\n            {locale && (\n              <>\n                <MainMenu />\n                <div className=\"flex justify-end\">\n                  <MobileMenuTrigger\n                    open={mobileMenuOpen}\n                    onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n                    className=\"md:hidden\"\n                  />\n                  <LanguageSwitcher\n                    activeLocale={locale}\n                    locales={availableLocales}\n                  />\n                </div>\n              </>\n            )}\n          </div>\n        </div>\n      </header>\n      <MobileMenu ref={mobileMenuRef} open={mobileMenuOpen} />\n      <SiteMeta {...siteMeta} />\n    </PrefetchContext.Provider>\n  );\n}\n","import React, { HTMLAttributes, ReactNode } from \"react\";\n\nexport type ParagraphProps = {\n    children: ReactNode\n} & HTMLAttributes<HTMLParagraphElement>;\n\nexport default function Paragraph({children, className = '', ...props}: ParagraphProps) {\n    return (\n        <p className={`mb-4 last:mb-0 leading-loose ${className}`} {...props}>{children}</p>\n    );\n}","import React, { ReactNode } from 'react';\n\nexport type UnorderedListProps = {\n  children: ReactNode;\n};\n\nexport function UnorderedList({ children }: UnorderedListProps) {\n  return <ul className=\"list-disc pl-6\">{children}</ul>;\n}\n\nexport default UnorderedList;\n","import React, { ReactNode } from 'react';\n\nexport type ListItemProps = {\n  children: ReactNode;\n};\n\nexport function ListItem({ children }: ListItemProps) {\n  return <li className=\"mb-2\">{children}</li>;\n}\n\nexport default ListItem;\n","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { faFacebook, faGithub, faGoogle, faInstagram, faLinkedin, faMedium, faTiktok, faTwitter, faXing, faYoutube, IconDefinition } from \"@fortawesome/free-brands-svg-icons\";\nimport { faQuestion } from \"@fortawesome/pro-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React from \"react\";\nimport Link from \"../link/Link\";\n\nexport type SocialMediaIcon = 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'medium' | 'youtube' | 'tiktok' | 'github' | 'google' | 'xing';\n\nexport type SocialMediaLinkProps = {\n    icon: SocialMediaIcon,\n    link: string\n};\n\nconst mapIcon = (icon: SocialMediaIcon): IconDefinition => {\n    switch (icon) {\n        case 'facebook':\n            return faFacebook;\n        case 'twitter':\n            return faTwitter;\n        case 'instagram':\n            return faInstagram;\n        case 'linkedin':\n            return faLinkedin;\n        case 'youtube':\n            return faYoutube;\n        case 'github':\n            return faGithub;\n        case 'google':\n            return faGoogle;\n        case 'medium':\n            return faMedium;\n        case 'tiktok':\n            return faTiktok;\n        case 'xing':\n            return faXing;\n    \n        default:\n            return faQuestion;\n    }\n}\n\nexport default function SocialMediaLink({\n    icon,\n    link\n}: SocialMediaLinkProps) {\n    return (\n        <Link to={link} title={icon} className=\"w-9 h-9 flex items-center justify-center bg-slate-300 text-slate-600 hover:bg-slate-400 dark:bg-slate-800 dark:hover:bg-slate-600 dark:text-white mr-2 mb-2\">\n            <FontAwesomeIcon icon={mapIcon(icon) as IconProp} />\n        </Link>\n    );\n}","import { faEnvelope, faPhone } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { MDXRenderer } from 'gatsby-plugin-mdx';\nimport React from 'react';\nimport useFooter from '../../hooks/useFooter';\nimport { useLocale } from '../../hooks/useLocale';\nimport usePreferredColorSchema from '../../hooks/usePreferredColorSchema';\nimport Logo from '../images/Logo';\nimport StrapiImage from '../images/StrapiImage';\nimport Link, { PrefetchContext } from '../link/Link';\nimport Translated from '../translation/Translated';\nimport SocialMediaLink from './SocialMediaLink';\n\nexport type FooterProps = {};\n\nexport default function Footer({}: FooterProps) {\n  const locale = useLocale();\n  const footer = useFooter(locale);\n  const colorSchema = usePreferredColorSchema();\n\n  return (\n    <PrefetchContext.Provider value=\"hover\">\n      <div className=\"border-t-2 border-b-2 border-slate-300 bg-slate-100  text-slate-600 dark:bg-slate-800 dark:text-slate-400 dark:border-slate-700\">\n        <div className=\"container mx-auto sm:px-8 px-4 sm:py-12 py-12\">\n          <div className=\"lg:flex block items-center\">\n            <div className=\"grow basis-0 lg:mb-0 mb-8\">\n              <div className=\"sm:text-4xl text-3xl mb-2 font-bold text-slate-700 dark:text-slate-200\">\n                <Translated k=\"contactUs\" />\n              </div>\n              <div className=\"max-w-prose md:pr-4\">{footer.contactCta}</div>\n            </div>\n            <div className=\"grow basis-0\">\n              <Link\n                to={`tel:${footer.contactPhone}`}\n                className=\"group flex items-center mb-6\"\n              >\n                <div className=\" flex justify-center items-center sm:text-2xl text-lg sm:rounded-xl  rounded-lg sm:w-12 sm:h-12 w-10 h-10 bg-green-500 shadow-lg text-white mr-4\">\n                  <FontAwesomeIcon fixedWidth icon={faPhone} />\n                </div>\n                <div className=\"grow sm:text-xl text-lg font-bold tracking-wide group-hover:text-black dark:group-hover:text-white dark:text-slate-300\">\n                  {footer.contactPhone}\n                </div>\n              </Link>\n              <Link\n                to={`mailto:${footer.contactEmail}`}\n                className=\"group flex items-center\"\n              >\n                <div className=\" flex justify-center items-center sm:text-2xl text-lg sm:rounded-xl rounded-lg sm:w-12 sm:h-12 w-10 h-10 bg-blue-500 shadow-lg text-white mr-4\">\n                  <FontAwesomeIcon fixedWidth icon={faEnvelope} />\n                </div>\n                <div className=\"grow sm:text-xl text-lg font-bold tracking-wide group-hover:text-black dark:group-hover:text-white dark:text-slate-300\">\n                  {footer.contactEmail}\n                </div>\n              </Link>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div className=\"bg-slate-200 dark:bg-slate-900\">\n        <div className=\"container mx-auto sm:px-8 px-4 py-12 sm:py-16\">\n          <div className=\"sm:flex\">\n            <div className=\"w-full flex flex-wrap justify-center sm:block items-center mb-12 sm:mb-0 sm:w-1/3 xl:w-1/5 mr-8 flex-shrink-0\">\n              <div className=\"w-12 sm:mb-6 mr-4\">\n                <Logo\n                  className=\"h-12 w-12\"\n                  format=\"icon\"\n                  colour={colorSchema === 'light' ? 'positive' : 'negative'}\n                />\n              </div>\n              <div className=\"text-slate-700 dark:text-slate-300 uppercase text-sm tracking-widest max-w-[200px]\">\n                {footer?.slogan}\n              </div>\n              {footer.socialLinks && (\n                <div className=\"mt-8 flex justify-center sm:justify-start flex-wrap w-full\">\n                  {footer.socialLinks.map(({ strapi_id, ...link }) => (\n                    <SocialMediaLink key={strapi_id} {...link} />\n                  ))}\n                </div>\n              )}\n            </div>\n            <div className=\"grid grid-cols-1 xs:grid-cols-2 xl:grid-cols-4 gap-8 flex-grow\">\n              {footer?.items.map((item) => (\n                <div key={item.strapi_id} className=\"\">\n                  <div className=\"font-bold uppercase tracking-wide text-slate-600 dark:text-slate-400 mb-4\">\n                    {item.title}\n                  </div>\n                  {item?.content && (\n                    <div className=\"text-slate-700 dark:text-slate-300\">\n                      <MDXRenderer>\n                        {item.content.data.childMdx.body}\n                      </MDXRenderer>\n                    </div>\n                  )}\n                  {item?.links?.map((link) => (\n                    <Link\n                      className=\"block mb-4 text-slate-700 dark:text-slate-300 dark:hover:text-white hover:text-black\"\n                      key={link.strapi_id}\n                      to={link.to}\n                    >\n                      {link.title}\n                    </Link>\n                  ))}\n                </div>\n              ))}\n            </div>\n          </div>\n        </div>\n      </div>\n      <div className=\"bg-slate-200 dark:bg-slate-900 \">\n        <div className=\"container mx-auto sm:px-8 px-4 pb-8 \">\n          <div className=\"grid xl:gap-16 gap-8 xl:grid-cols-5 sm:grid-cols-3 grid-cols-2 border-t-2 border-slate-300 dark:border-slate-800 sm:pt-12 pt-8\">\n            {footer.partnerLogos.map((partner) => (\n              <Link\n                key={partner.link}\n                to={partner.link}\n                className=\"block group\"\n              >\n                <div className=\"p-4 bg-white dark:bg-slate-800 rounded-lg shadow-md dark:shadow-black/30\">\n                  <StrapiImage\n                    image={partner.logo}\n                    objectFit=\"contain\"\n                    className=\"h-12 contrast-0 dark:brightness-200 group-hover:filter-none transition-all\"\n                  />\n                </div>\n                <div className=\"mt-4 text-xs text-center tracking-wider text-gray-700 font-medium group-hover:text-black dark:text-gray-400 dark:group-hover:text-white\">\n                  {partner.title}\n                </div>\n              </Link>\n            ))}\n          </div>\n        </div>\n      </div>\n      <div className=\"bg-slate-300 dark:bg-black dark:border-t dark:border-slate-900 \">\n        <div className=\"container mx-auto sm:px-8 px-4 py-2 \">\n          <div className=\"text-gray-700 dark:text-gray-400 text-sm text-center sm:text-left\">\n            {footer?.copyright}\n          </div>\n        </div>\n      </div>\n    </PrefetchContext.Provider>\n  );\n}\n","import { graphql, useStaticQuery } from 'gatsby';\nimport { useMemo } from 'react';\nimport { SocialMediaIcon } from '../components/footer/SocialMediaLink';\nimport { StrapiApiImage } from '../components/images/StrapiImage';\n\nexport type FooterSocialLinkData = {\n  strapi_id: number;\n  link: string;\n  icon: SocialMediaIcon;\n};\n\nexport type FooterLinkData = {\n  strapi_id: number;\n  title: string;\n  to: string;\n};\n\nexport type FooterItemData = {\n  strapi_id: number;\n  title: string;\n  content?: any;\n  links?: FooterLinkData[];\n};\n\nexport type FooterPartnerData = {\n  title: string;\n  link?: string;\n  logo: StrapiApiImage;\n};\n\nexport type FooterData = {\n  locale: string;\n  slogan: string;\n  copyright: string;\n  contactCta?: string;\n  contactPhone: string;\n  contactEmail: string;\n  items?: FooterItemData[];\n  socialLinks?: FooterSocialLinkData[];\n  partnerLogos?: FooterPartnerData[];\n};\n\nexport default function useFooter(locale: string): FooterData {\n  const { allStrapiFooter } = useStaticQuery(graphql`\n    query {\n      allStrapiFooter {\n        nodes {\n          locale\n          slogan\n          copyright\n          contactEmail\n          contactPhone\n          contactCta\n          items {\n            strapi_id\n            title\n            content {\n              data {\n                childMdx {\n                  body\n                }\n              }\n            }\n            links {\n              title\n              to\n              strapi_id\n            }\n          }\n          socialLinks {\n            strapi_id\n            link\n            icon\n          }\n          partnerLogos {\n            logo {\n              ...StrapiImageConstrained\n            }\n            title\n            link\n          }\n        }\n      }\n    }\n  `);\n\n  return useMemo(() => {\n    const fallbackFooter = allStrapiFooter.nodes.find(\n      (node: any) => node.locale.toLowerCase() === 'en'\n    );\n    const footer = allStrapiFooter.nodes.find(\n      (node: any) =>\n        node.locale.toLowerCase() === (locale?.toLowerCase() ?? 'en')\n    );\n\n    if (!footer) {\n      return fallbackFooter as FooterData;\n    }\n\n    return footer as FooterData;\n  }, [allStrapiFooter, locale]);\n}\n","import { useCallback, useEffect, useState } from 'react';\n\nexport function useLocalStorage(\n  key: string,\n  defaultValue: string | null = null\n): [string | null, (val: string | null) => void] {\n  const [internalVal, setInternalVal] = useState<string | null>(defaultValue);\n\n  const handleStorageChange = useCallback(\n    (evt: StorageEvent) => {\n      if (evt.key !== key) return;\n      if (evt.newValue !== internalVal) {\n        setInternalVal(evt.newValue);\n      }\n    },\n    [setInternalVal, internalVal, key]\n  );\n\n  useEffect(() => {\n    setInternalVal(window.localStorage.getItem(key) ?? defaultValue);\n  }, [defaultValue, setInternalVal]);\n\n  useEffect(() => {\n    window.addEventListener('storage', handleStorageChange);\n    return () => {\n      window.removeEventListener('storage', handleStorageChange);\n    };\n  }, [handleStorageChange]);\n\n  const setVal = useCallback(\n    (val: string | null) => {\n      if (val === null) {\n        setInternalVal(null);\n        window.localStorage.removeItem(key);\n      } else {\n        setInternalVal(val);\n        window.localStorage.setItem(key, val);\n      }\n    },\n    [key]\n  );\n\n  return [internalVal, setVal];\n}\n","import React, { ReactNode } from 'react';\n\nexport type GdprGroupProps = {\n  title: ReactNode;\n  description: ReactNode;\n  active?: boolean;\n  disabled?: boolean;\n  onChange?: (active: boolean) => void;\n};\n\nconst GdprGroup = ({\n  title,\n  description,\n  active,\n  disabled,\n  onChange,\n}: GdprGroupProps) => {\n  return (\n    <div\n      className={`${\n        disabled\n          ? 'bg-gray-200 text-gray-500 dark:bg-gray-900 dark:border-gray-700'\n          : active\n          ? 'border-blue-500 bg-blue-500 hover:bg-blue-600 dark:border-blue-600 dark:bg-blue-900 dark:hover:bg-blue-700 text-white'\n          : 'border-gray-200 hover:bg-gray-100 dark:border-gray-700 dark:hover:bg-gray-900'\n      } border rounded-md p-4 mb-2 cursor-pointer`}\n      onClick={() => onChange && onChange(!active)}\n    >\n      <div className=\"text-sm font-bold\">{title}</div>\n      <div className=\"text-xs opacity-70\">{description}</div>\n    </div>\n  );\n};\n\nexport default GdprGroup;\n","import { faCog, faFingerprint } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useEffect, useState } from 'react';\nimport { useLocalStorage } from '../../hooks/useLocalStorage';\nimport useOutsideClick from '../../hooks/useOutsideClick';\nimport Card from '../cards/Card';\nimport Translated from '../translation/Translated';\nimport GsprGroup from './Group';\nimport Button from '../buttons/Button';\nimport useSSR from '../../hooks/useSSR';\n\nexport type CookieNoticeProps = {};\n\nconst CookieNotice = ({}: CookieNoticeProps) => {\n  const isBrowser = useSSR();\n  const [isGDPRShown, setGDPRShown] = useLocalStorage('gdpr', 'false');\n  const [isMinimized, setMinimized] = useState(false);\n  const [showBack, setShowBack] = useState(false);\n  const [isGAactive, setGA] = useLocalStorage('analytics-consent', 'false');\n\n  const denyAll = () => {\n    setGA('false');\n    setGDPRShown('true');\n    setMinimized(true);\n    if ((window as any).updateConsent) {\n      (window as any).updateConsent();\n    }\n  };\n  const acceptAll = () => {\n    setGA('true');\n    setGDPRShown('true');\n    setMinimized(true);\n    if ((window as any).updateConsent) {\n      (window as any).updateConsent();\n    }\n  };\n\n  const cardRef = useOutsideClick(() => {\n    if (!isMinimized) {\n      setMinimized(true);\n    }\n  });\n\n  useEffect(() => {\n    if (isGDPRShown === 'true') {\n      setMinimized(true);\n      setShowBack(true);\n    }\n  }, [isGDPRShown]);\n\n  if (!isBrowser) {\n    return null;\n  }\n\n  if (isMinimized) {\n    return (\n      <div\n        onClick={() => setMinimized(false)}\n        className=\"fixed text-2xl bottom-4 left-4 border border-gray-500 dark:border-gray-400 bg-white text-black dark:bg-black dark:text-white flex items-center justify-center shadow-xl rounded-full w-12 h-12 cursor-pointer opacity-40 hover:opacity-100\"\n      >\n        <FontAwesomeIcon icon={faFingerprint} />\n      </div>\n    );\n  }\n\n  const front = (\n    <div>\n      <h6 className=\"px-2 py-2 font-bold text-lg\">\n        <Translated ns=\"gdpr\" k=\"title\">\n          We value your privacy\n        </Translated>\n      </h6>\n      <div className=\"text-xs max-h-24 md:max-h-full overflow-y-auto px-2 py-2\">\n        <Translated ns=\"gdpr\" k=\"description\">\n          We and our partners use technologies such as cookies or targeting and\n          process personal data such as IP address or browser information. This\n          helps us to improve your internet experience. We also use this to\n          measure results or customise the content of our website. Because we\n          value your privacy, we hereby ask for your permission to use the\n          following technologies. You can change / withdraw your consent at any\n          time later by clicking on the settings in the bottom left corner of\n          the page.\n        </Translated>\n      </div>\n      <div className=\"mt-4 text-center md:text-right\">\n        <div className=\"space-x-2 md:inline-block md:mr-2\">\n          <Button\n            type=\"outline\"\n            title=\"Settings\"\n            className=\"my-1\"\n            onClick={() => {\n              setShowBack(true);\n            }}\n          >\n            <FontAwesomeIcon icon={faCog} />\n          </Button>\n          <Button type=\"outline\" className=\"my-1\" onClick={denyAll}>\n            <Translated ns=\"gdpr\" k=\"declineAll\">\n              Decline\n            </Translated>\n          </Button>\n          <Button className=\"my-1\" onClick={acceptAll}>\n            <Translated ns=\"gdpr\" k=\"acceptAll\">\n              Accept\n            </Translated>\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n  const back = (\n    <div>\n      <div className=\"overflow-y-auto\" style={{ maxHeight: '60vh' }}>\n        <h3 className=\"px-2 py-2 font-bold text-lg\">\n          <Translated ns=\"gdpr\" k=\"settingsTitle\">\n            Privacy Settings\n          </Translated>\n        </h3>\n        <p className=\"text-xs mb-4 text-gray-400 px-2 py-2\">\n          <Translated ns=\"gdpr\" k=\"settingsDescription\">\n            This tool allows you to select and disable various tags / trackers /\n            analytics tools used on this website.\n          </Translated>\n        </p>\n        <div className=\"md:max-h-60 overflow-y-auto\">\n          <GsprGroup\n            title={\n              <Translated ns=\"gdpr\" k=\"googleAnalyticsTitle\">\n                Google Analytics\n              </Translated>\n            }\n            description={\n              <Translated ns=\"gdpr\" k=\"googleAnalyticsDescription\">\n                These tags allow us to analyse the use of the website to measure\n                and improve its performance.\n              </Translated>\n            }\n            active={isGAactive === 'true'}\n            onChange={(active) => {\n              setGA(active ? 'true' : 'false');\n              if ((window as any).updateConsent) {\n                (window as any).updateConsent();\n              }\n            }}\n          />\n          <GsprGroup\n            title={\n              <Translated ns=\"gdpr\" k=\"essentialsTitle\">\n                Essentials\n              </Translated>\n            }\n            description={\n              <Translated ns=\"gdpr\" k=\"essentialsDescription\">\n                These tags are required for the basic functions of the website.\n              </Translated>\n            }\n            disabled\n          />\n        </div>\n      </div>\n      <div className=\"mt-4 text-center md:text-right\">\n        <div className=\"space-x-2 md:inline-block md:mr-2\">\n          <Button\n            type=\"outline\"\n            onClick={() => {\n              setGDPRShown('true');\n              setMinimized(true);\n            }}\n            className=\"my-1\"\n          >\n            <Translated ns=\"gdpr\" k=\"close\">\n              Close\n            </Translated>\n          </Button>\n          <Button type=\"outline\" className=\"my-1\" onClick={denyAll}>\n            <Translated ns=\"gdpr\" k=\"declineAll\">\n              Decline\n            </Translated>\n          </Button>\n          <Button className=\"my-1\" onClick={acceptAll}>\n            <Translated ns=\"gdpr\" k=\"acceptAll\">\n              Accept\n            </Translated>\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n\n  return (\n    <div\n      className=\"fixed bottom-2 left-2 right-2 z-40 md:right-auto\"\n      style={{ maxWidth: 600 }}\n      ref={cardRef}\n    >\n      <Card\n        flat\n        className=\"md:px-4 md:py-4 px-2 py-2 bg-white dark:bg-black border border-gray-300 dark:border-gray-700 shadow-xl rounded-xl\"\n      >\n        {showBack ? back : front}\n      </Card>\n    </div>\n  );\n};\n\nexport default CookieNotice;\n","import { PageProps } from 'gatsby';\nimport React, { ReactNode, Suspense, useCallback, useEffect } from 'react';\nimport { LocaleProvider } from '../../hooks/useLocale';\nimport Header from '../header/Header';\nimport { MDXProvider } from '@mdx-js/react';\nimport Paragraph from '../typography/Paragraph';\nimport usePreferredColorSchema from '../../hooks/usePreferredColorSchema';\nimport UnorderedList from '../typography/UnorderedList';\nimport ListItem from '../typography/ListItem';\nimport { useTranslation } from 'react-i18next';\nimport loadable from '@loadable/component';\nimport Footer from '../footer/Footer';\nimport CookieNotice from '../gdpr/Notice';\n\nexport default function Layout({ children, ...props }: PageProps<any, any>) {\n  const mdxComponents = {\n    p: Paragraph,\n    ul: UnorderedList,\n    li: ListItem,\n  };\n\n  const colorSchema = usePreferredColorSchema();\n\n  const { i18n } = useTranslation();\n  const locale = props?.params?.locale;\n\n  useEffect(() => {\n    if (locale && locale != i18n.language) {\n      i18n.changeLanguage(locale);\n    }\n  }, [locale]);\n\n  useEffect(() => {\n    if (\n      colorSchema === 'dark' &&\n      !document.documentElement.classList.contains('dark')\n    ) {\n      document.documentElement.classList.add('dark');\n    } else if (\n      colorSchema !== 'dark' &&\n      document.documentElement.classList.contains('dark')\n    ) {\n      document.documentElement.classList.remove('dark');\n    }\n  }, [colorSchema]);\n\n  return (\n    <LocaleProvider locale={locale}>\n      <MDXProvider components={mdxComponents}>\n        <div className=\"antialiased flex flex-col min-h-screen w-100\">\n          <Header {...props} />\n          <div className=\"pt-14 flex flex-col flex-grow\">{children}</div>\n          {locale && <Footer />}\n        </div>\n        <CookieNotice />\n      </MDXProvider>\n    </LocaleProvider>\n  );\n}\n","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context';\nexport function I18nextProvider(_ref) {\n  var i18n = _ref.i18n,\n      defaultNS = _ref.defaultNS,\n      children = _ref.children;\n  var value = useMemo(function () {\n    return {\n      i18n: i18n,\n      defaultNS: defaultNS\n    };\n  }, [i18n, defaultNS]);\n  return createElement(I18nContext.Provider, {\n    value: value\n  }, children);\n}","import React from 'react';\nimport i18n from 'i18next';\nimport Backend from 'i18next-http-backend';\nimport Layout from './src/components/layout/Layout';\nimport '@fontsource/poppins/400.css';\nimport '@fontsource/poppins/500.css';\nimport '@fontsource/poppins/700.css';\nimport './src/styles/global.css';\nimport { I18nextProvider, initReactI18next } from 'react-i18next';\n\n/**\n * Trigger analytics on route change\n */\nexport const onRouteUpdate = ({ location, prevLocation }) => {\n  if (process.env.NODE_ENV !== `production` || typeof gtag !== `function`) {\n    return null;\n  }\n\n  // wrap inside a timeout to make sure react-helmet is done with its changes (https://github.com/gatsbyjs/gatsby/issues/11592)\n  const sendPageView = () => {\n    const pagePath = location\n      ? location.pathname + location.search + location.hash\n      : undefined;\n    window.gtag(`event`, `page_view`, { page_path: pagePath });\n  };\n\n  if (`requestAnimationFrame` in window) {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(sendPageView);\n    });\n  } else {\n    // simulate 2 rAF calls\n    setTimeout(sendPageView, 32);\n  }\n\n  return null;\n};\n\n/**\n * Wrap page with layout component\n */\nexport const wrapPageElement = ({ element, props }) => {\n  const locale = props?.pageContext?.locale;\n\n  if (!i18n.isInitialized) {\n    i18n\n      .use(initReactI18next)\n      .use(Backend)\n      .init({\n        lng: locale,\n        fallbackLng: 'en',\n        initImmediate: false,\n        debug: process.env.NODE_ENV === 'development',\n        react: {\n          useSuspense: false,\n        },\n      });\n  }\n\n  return (\n    <I18nextProvider i18n={i18n}>\n      <Layout {...props}>{element}</Layout>\n    </I18nextProvider>\n  );\n};\n\n/**\n * Measure scrollbar width\n */\nvar scrollDiv = document.createElement('div');\nscrollDiv.setAttribute(\n  'style',\n  'overflow-y:scroll; width: 100px; height: 100px;'\n);\ndocument.body.appendChild(scrollDiv);\nwindow.scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\ndocument.body.removeChild(scrollDiv);\n","/* eslint-disable no-unused-expressions */\nimport { stripIndent } from \"common-tags\"\nimport camelCase from \"camelcase\"\nimport { IGatsbyImageData } from \".\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n  320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n  warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n  layout?: Layout\n  formats?: Array<ImageFormat>\n  placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n  tracedSVGOptions?: Record<string, unknown>\n  width?: number\n  height?: number\n  aspectRatio?: number\n  sizes?: string\n  quality?: number\n  transformOptions?: {\n    fit?: Fit\n    cropFocus?: number | string\n    duotone?: {\n      highlight: string\n      shadow: string\n      opacity?: number\n    }\n    grayscale?: boolean\n    rotate?: number\n    trim?: number\n  }\n  jpgOptions?: Record<string, unknown>\n  pngOptions?: Record<string, unknown>\n  webpOptions?: Record<string, unknown>\n  avifOptions?: Record<string, unknown>\n  blurredOptions?: { width?: number; toFormat?: ImageFormat }\n  breakpoints?: Array<number>\n  backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n  width?: number\n  height?: number\n  layout?: Layout\n  filename: string\n  outputPixelDensities?: Array<number>\n  breakpoints?: Array<number>\n  fit?: Fit\n  reporter?: IReporter\n  sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n  sizes: Array<number>\n  presentationWidth: number\n  presentationHeight: number\n  aspectRatio: number\n  unscaledWidth: number\n}\n\nexport interface IImage {\n  src: string\n  width: number\n  height: number\n  format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n  pluginName: string\n  generateImageSource: (\n    filename: string,\n    width: number,\n    height: number,\n    format: ImageFormat,\n    fit?: Fit,\n    options?: Record<string, unknown>\n  ) => IImage\n  layout?: Layout\n  formats?: Array<ImageFormat>\n  filename: string\n  placeholderURL?: string\n  width?: number\n  height?: number\n  sizes?: string\n  reporter?: IReporter\n  sourceMetadata?: { width: number; height: number; format: ImageFormat }\n  fit?: Fit\n  options?: Record<string, unknown>\n  breakpoints?: Array<number>\n  backgroundColor?: string\n  aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n  switch (layout) {\n    // If screen is wider than the max size, image width is the max size,\n    // otherwise it's the width of the screen\n    case `constrained`:\n      return `(min-width: ${width}px) ${width}px, 100vw`\n\n    // Image is always the same width, whatever the size of the screen\n    case `fixed`:\n      return `${width}px`\n\n    // Image is always the width of the screen\n    case `fullWidth`:\n      return `100vw`\n\n    default:\n      return undefined\n  }\n}\n\nexport const getSrcSet = (images: Array<IImage>): string =>\n  images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n  const dot = filename.lastIndexOf(`.`)\n  if (dot !== -1) {\n    const ext = filename.substr(dot + 1)\n    if (ext === `jpeg`) {\n      return `jpg`\n    }\n    if (ext.length === 3 || ext.length === 4) {\n      return ext as ImageFormat\n    }\n  }\n  return undefined\n}\n\nexport function setDefaultDimensions(\n  args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n  let {\n    layout = `constrained`,\n    width,\n    height,\n    sourceMetadata,\n    breakpoints,\n    aspectRatio,\n    formats = [`auto`, `webp`],\n  } = args\n  formats = formats.map(format => format.toLowerCase() as ImageFormat)\n  layout = camelCase(layout) as Layout\n\n  if (width && height) {\n    return { ...args, formats, layout, aspectRatio: width / height }\n  }\n  if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n    aspectRatio = sourceMetadata.width / sourceMetadata.height\n  }\n\n  if (layout === `fullWidth`) {\n    width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n    height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n  } else {\n    if (!width) {\n      if (height && aspectRatio) {\n        width = height * aspectRatio\n      } else if (sourceMetadata.width) {\n        width = sourceMetadata.width\n      } else if (height) {\n        width = Math.round(height / DEFAULT_ASPECT_RATIO)\n      } else {\n        width = DEFAULT_FIXED_WIDTH\n      }\n    }\n\n    if (aspectRatio && !height) {\n      height = Math.round(width / aspectRatio)\n    } else if (!aspectRatio) {\n      aspectRatio = width / height\n    }\n  }\n  return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n  args: IGatsbyImageHelperArgs,\n  width = 20\n): string {\n  args = setDefaultDimensions(args)\n  const { generateImageSource, filename, aspectRatio } = args\n  return generateImageSource(\n    filename,\n    width,\n    Math.round(width / aspectRatio),\n    args.sourceMetadata.format || `jpg`,\n    args.fit,\n    args.options\n  )?.src\n}\n\nexport function generateImageData(\n  args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n  args = setDefaultDimensions(args)\n\n  let {\n    pluginName,\n    sourceMetadata,\n    generateImageSource,\n    layout,\n    fit,\n    options,\n    width,\n    height,\n    filename,\n    reporter = { warn },\n    backgroundColor,\n    placeholderURL,\n  } = args\n\n  if (!pluginName) {\n    reporter.warn(\n      `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n    )\n  }\n\n  if (typeof generateImageSource !== `function`) {\n    throw new Error(`generateImageSource must be a function`)\n  }\n\n  if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n    // No metadata means we let the CDN handle max size etc, aspect ratio etc\n    sourceMetadata = {\n      width,\n      height,\n      format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n    }\n  } else if (!sourceMetadata.format) {\n    sourceMetadata.format = formatFromFilename(filename)\n  }\n\n  const formats = new Set<ImageFormat>(args.formats)\n\n  if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n    formats.delete(`auto`)\n    formats.delete(``)\n    formats.add(sourceMetadata.format)\n  }\n\n  if (formats.has(`jpg`) && formats.has(`png`)) {\n    reporter.warn(\n      `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n    )\n    if (sourceMetadata.format === `jpg`) {\n      formats.delete(`png`)\n    } else {\n      formats.delete(`jpg`)\n    }\n  }\n\n  const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n  const result: IGatsbyImageData[\"images\"] = {\n    sources: [],\n  }\n\n  let sizes = args.sizes\n  if (!sizes) {\n    sizes = getSizes(imageSizes.presentationWidth, layout)\n  }\n\n  formats.forEach(format => {\n    const images = imageSizes.sizes\n      .map(size => {\n        const imageSrc = generateImageSource(\n          filename,\n          size,\n          Math.round(size / imageSizes.aspectRatio),\n          format,\n          fit,\n          options\n        )\n        if (\n          !imageSrc?.width ||\n          !imageSrc.height ||\n          !imageSrc.src ||\n          !imageSrc.format\n        ) {\n          reporter.warn(\n            `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n          )\n          return undefined\n        }\n        return imageSrc\n      })\n      .filter(Boolean)\n\n    if (format === `jpg` || format === `png` || format === `auto`) {\n      const unscaled =\n        images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n      if (unscaled) {\n        result.fallback = {\n          src: unscaled.src,\n          srcSet: getSrcSet(images),\n          sizes,\n        }\n      }\n    } else {\n      result.sources?.push({\n        srcSet: getSrcSet(images),\n        sizes,\n        type: `image/${format}`,\n      })\n    }\n  })\n\n  const imageProps: Partial<IGatsbyImageData> = {\n    images: result,\n    layout,\n    backgroundColor,\n  }\n\n  if (placeholderURL) {\n    imageProps.placeholder = { fallback: placeholderURL }\n  }\n\n  switch (layout) {\n    case `fixed`:\n      imageProps.width = imageSizes.presentationWidth\n      imageProps.height = imageSizes.presentationHeight\n      break\n\n    case `fullWidth`:\n      imageProps.width = 1\n      imageProps.height = 1 / imageSizes.aspectRatio\n      break\n\n    case `constrained`:\n      imageProps.width = args.width || imageSizes.presentationWidth || 1\n      imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n  }\n\n  return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array<number>): Array<number> =>\n  Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n  const {\n    width,\n    height,\n    filename,\n    layout = `constrained`,\n    sourceMetadata: imgDimensions,\n    reporter = { warn },\n    breakpoints = DEFAULT_BREAKPOINTS,\n  } = args\n\n  // check that all dimensions provided are positive\n  const userDimensions = { width, height }\n  const erroneousUserDimensions = Object.entries(userDimensions).filter(\n    ([_, size]) => typeof size === `number` && size < 1\n  )\n  if (erroneousUserDimensions.length) {\n    throw new Error(\n      `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n        .map(dim => dim.join(`: `))\n        .join(`, `)}`\n    )\n  }\n\n  if (layout === `fixed`) {\n    return fixedImageSizes(args)\n  } else if (layout === `constrained`) {\n    return responsiveImageSizes(args)\n  } else if (layout === `fullWidth`) {\n    return responsiveImageSizes({ breakpoints, ...args })\n  } else {\n    reporter.warn(\n      `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n    )\n    return {\n      sizes: [imgDimensions.width],\n      presentationWidth: imgDimensions.width,\n      presentationHeight: imgDimensions.height,\n      aspectRatio: imgDimensions.width / imgDimensions.height,\n      unscaledWidth: imgDimensions.width,\n    }\n  }\n}\nexport function fixedImageSizes({\n  filename,\n  sourceMetadata: imgDimensions,\n  width,\n  height,\n  fit = `cover`,\n  outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n  reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n  let aspectRatio = imgDimensions.width / imgDimensions.height\n  // Sort, dedupe and ensure there's a 1\n  const densities = dedupeAndSortDensities(outputPixelDensities)\n\n  // If both are provided then we need to check the fit\n  if (width && height) {\n    const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n      width,\n      height,\n      fit,\n    })\n    width = calculated.width\n    height = calculated.height\n    aspectRatio = calculated.aspectRatio\n  }\n\n  if (!width) {\n    if (!height) {\n      width = DEFAULT_FIXED_WIDTH\n    } else {\n      width = Math.round(height * aspectRatio)\n    }\n  } else if (!height) {\n    height = Math.round(width / aspectRatio)\n  }\n\n  const originalWidth = width // will use this for presentationWidth, don't want to lose it\n  const isTopSizeOverriden =\n    imgDimensions.width < width || imgDimensions.height < (height as number)\n\n  // If the image is smaller than requested, warn the user that it's being processed as such\n  // print out this message with the necessary information before we overwrite it for sizing\n  if (isTopSizeOverriden) {\n    const fixedDimension = imgDimensions.width < width ? `width` : `height`\n    reporter.warn(stripIndent`\n    The requested ${fixedDimension} \"${\n      fixedDimension === `width` ? width : height\n    }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n      imgDimensions[fixedDimension]\n    }px. If possible, replace the current image with a larger one.`)\n\n    if (fixedDimension === `width`) {\n      width = imgDimensions.width\n      height = Math.round(width / aspectRatio)\n    } else {\n      height = imgDimensions.height\n      width = height * aspectRatio\n    }\n  }\n\n  const sizes = densities\n    .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n    .map(density => Math.round(density * (width as number)))\n    .filter(size => size <= imgDimensions.width)\n\n  return {\n    sizes,\n    aspectRatio,\n    presentationWidth: originalWidth,\n    presentationHeight: Math.round(originalWidth / aspectRatio),\n    unscaledWidth: width,\n  }\n}\n\nexport function responsiveImageSizes({\n  sourceMetadata: imgDimensions,\n  width,\n  height,\n  fit = `cover`,\n  outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n  breakpoints,\n  layout,\n}: IImageSizeArgs): IImageSizes {\n  let sizes\n  let aspectRatio = imgDimensions.width / imgDimensions.height\n  // Sort, dedupe and ensure there's a 1\n  const densities = dedupeAndSortDensities(outputPixelDensities)\n\n  // If both are provided then we need to check the fit\n  if (width && height) {\n    const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n      width,\n      height,\n      fit,\n    })\n    width = calculated.width\n    height = calculated.height\n    aspectRatio = calculated.aspectRatio\n  }\n\n  // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n  width = width && Math.min(width, imgDimensions.width)\n  height = height && Math.min(height, imgDimensions.height)\n\n  // Case 2: neither width or height were passed in, use default size\n  if (!width && !height) {\n    width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n    height = width / aspectRatio\n  }\n\n  // if it still hasn't been found, calculate width from the derived height.\n  // TS isn't smart enough to realise the type for height has been narrowed here\n  if (!width) {\n    width = (height as number) * aspectRatio\n  }\n\n  const originalWidth = width\n  const isTopSizeOverriden =\n    imgDimensions.width < width || imgDimensions.height < (height as number)\n  if (isTopSizeOverriden) {\n    width = imgDimensions.width\n    height = imgDimensions.height\n  }\n\n  width = Math.round(width)\n\n  if (breakpoints?.length > 0) {\n    sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n    // If a larger breakpoint has been filtered-out, add the actual image width instead\n    if (\n      sizes.length < breakpoints.length &&\n      !sizes.includes(imgDimensions.width)\n    ) {\n      sizes.push(imgDimensions.width)\n    }\n  } else {\n    sizes = densities.map(density => Math.round(density * (width as number)))\n    sizes = sizes.filter(size => size <= imgDimensions.width)\n  }\n\n  // ensure that the size passed in is included in the final output\n  if (layout === `constrained` && !sizes.includes(width)) {\n    sizes.push(width)\n  }\n  sizes = sizes.sort(sortNumeric)\n  return {\n    sizes,\n    aspectRatio,\n    presentationWidth: originalWidth,\n    presentationHeight: Math.round(originalWidth / aspectRatio),\n    unscaledWidth: width,\n  }\n}\n\nexport function getDimensionsAndAspectRatio(\n  dimensions,\n  options\n): { width: number; height: number; aspectRatio: number } {\n  // Calculate the eventual width/height of the image.\n  const imageAspectRatio = dimensions.width / dimensions.height\n\n  let width = options.width\n  let height = options.height\n\n  switch (options.fit) {\n    case `fill`: {\n      width = options.width ? options.width : dimensions.width\n      height = options.height ? options.height : dimensions.height\n      break\n    }\n    case `inside`: {\n      const widthOption = options.width\n        ? options.width\n        : Number.MAX_SAFE_INTEGER\n      const heightOption = options.height\n        ? options.height\n        : Number.MAX_SAFE_INTEGER\n\n      width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n      height = Math.min(\n        heightOption,\n        Math.round(widthOption / imageAspectRatio)\n      )\n      break\n    }\n    case `outside`: {\n      const widthOption = options.width ? options.width : 0\n      const heightOption = options.height ? options.height : 0\n\n      width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n      height = Math.max(\n        heightOption,\n        Math.round(widthOption / imageAspectRatio)\n      )\n      break\n    }\n\n    default: {\n      if (options.width && !options.height) {\n        width = options.width\n        height = Math.round(options.width / imageAspectRatio)\n      }\n\n      if (options.height && !options.width) {\n        width = Math.round(options.height * imageAspectRatio)\n        height = options.height\n      }\n    }\n  }\n\n  return {\n    width,\n    height,\n    aspectRatio: width / height,\n  }\n}\n","/* eslint-disable no-unused-expressions */\nimport {\n  useState,\n  CSSProperties,\n  useEffect,\n  HTMLAttributes,\n  ImgHTMLAttributes,\n  ReactEventHandler,\n  SetStateAction,\n  Dispatch,\n  RefObject,\n} from \"react\"\nimport { Node } from \"gatsby\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport {\n  IGatsbyImageHelperArgs,\n  generateImageData,\n  Layout,\n  EVERY_BREAKPOINT,\n  IImage,\n  ImageFormat,\n} from \"../image-utils\"\nconst imageCache = new Set<string>()\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n  typeof HTMLImageElement !== `undefined` &&\n  `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n  return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport function storeImageloaded(cacheKey?: string): void {\n  if (cacheKey) {\n    imageCache.add(cacheKey)\n  }\n}\n\nexport function hasImageLoaded(cacheKey: string): boolean {\n  return imageCache.has(cacheKey)\n}\nexport type IGatsbyImageDataParent<T = never> = T & {\n  gatsbyImageData: IGatsbyImageData\n}\nexport type FileNode = Node & {\n  childImageSharp?: IGatsbyImageDataParent<Node>\n}\n\nconst isGatsbyImageData = (\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n  // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n  Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = <T>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  node: IGatsbyImageDataParent<T> | any\n): node is IGatsbyImageDataParent<T> => Boolean(node?.gatsbyImageData)\n\nexport type ImageDataLike = FileNode | IGatsbyImageDataParent | IGatsbyImageData\nexport const getImage = (node: ImageDataLike): IGatsbyImageData | undefined => {\n  if (isGatsbyImageData(node)) {\n    return node\n  }\n  if (isGatsbyImageDataParent(node)) {\n    return node.gatsbyImageData\n  }\n  return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n  getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n  getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n  width: number,\n  height: number,\n  layout: Layout\n): Pick<HTMLAttributes<HTMLElement>, \"className\" | \"style\"> & {\n  \"data-gatsby-image-wrapper\": string\n} {\n  const wrapperStyle: CSSProperties = {}\n\n  let className = `gatsby-image-wrapper`\n\n  // If the plugin isn't installed we need to apply the styles inline\n  if (!gatsbyImageIsInstalled()) {\n    wrapperStyle.position = `relative`\n    wrapperStyle.overflow = `hidden`\n  }\n\n  if (layout === `fixed`) {\n    wrapperStyle.width = width\n    wrapperStyle.height = height\n  } else if (layout === `constrained`) {\n    if (!gatsbyImageIsInstalled()) {\n      wrapperStyle.display = `inline-block`\n      wrapperStyle.verticalAlign = `top`\n    }\n    className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n  }\n\n  return {\n    className,\n    \"data-gatsby-image-wrapper\": ``,\n    style: wrapperStyle,\n  }\n}\n\nexport async function applyPolyfill(\n  ref: RefObject<HTMLImageElement>\n): Promise<void> {\n  if (!(`objectFitPolyfill` in window)) {\n    await import(\n      // @ts-ignore typescript can't find the module for some reason ¯\\_(ツ)_/¯\n      /* webpackChunkName: \"gatsby-plugin-image-objectfit-polyfill\" */ `objectFitPolyfill`\n    )\n  }\n  ;(window as any).objectFitPolyfill(ref.current)\n}\n\nexport interface IUrlBuilderArgs<OptionsType> {\n  width: number\n  height: number\n  baseUrl: string\n  format: ImageFormat\n  options: OptionsType\n}\nexport interface IGetImageDataArgs<OptionsType = Record<string, unknown>> {\n  baseUrl: string\n  /**\n   * For constrained and fixed images, the size of the image element\n   */\n  width?: number\n  height?: number\n  /**\n   * If available, pass the source image width and height\n   */\n  sourceWidth?: number\n  sourceHeight?: number\n  /**\n   * If only one dimension is passed, then this will be used to calculate the other.\n   */\n  aspectRatio?: number\n  layout?: Layout\n  /**\n   * Returns a URL based on the passed arguments. Should be a pure function\n   */\n  urlBuilder: (args: IUrlBuilderArgs<OptionsType>) => string\n\n  /**\n   * Should be a data URI\n   */\n  placeholderURL?: string\n  backgroundColor?: string\n  /**\n   * Used in error messages etc\n   */\n  pluginName?: string\n\n  /**\n   * If you do not support auto-format, pass an array of image types here\n   */\n  formats?: Array<ImageFormat>\n\n  breakpoints?: Array<number>\n\n  /**\n   * Passed to the urlBuilder function\n   */\n  options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData<OptionsType>({\n  baseUrl,\n  urlBuilder,\n  sourceWidth,\n  sourceHeight,\n  pluginName = `getImageData`,\n  formats = [`auto`],\n  breakpoints,\n  options,\n  ...props\n}: IGetImageDataArgs<OptionsType>): IGatsbyImageData {\n  if (\n    !breakpoints?.length &&\n    (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n  ) {\n    breakpoints = EVERY_BREAKPOINT\n  }\n  const generateImageSource = (\n    baseUrl: string,\n    width: number,\n    height?: number,\n    format?: ImageFormat\n  ): IImage => {\n    return {\n      width,\n      height,\n      format,\n      src: urlBuilder({ baseUrl, width, height, options, format }),\n    }\n  }\n\n  const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n    width: sourceWidth,\n    height: sourceHeight,\n    format: `auto`,\n  }\n\n  const args: IGatsbyImageHelperArgs = {\n    ...props,\n    pluginName,\n    generateImageSource,\n    filename: baseUrl,\n    formats,\n    breakpoints,\n    sourceMetadata,\n  }\n  return generateImageData(args)\n}\n\nexport function getMainProps(\n  isLoading: boolean,\n  isLoaded: boolean,\n  images: IGatsbyImageData[\"images\"],\n  loading?: \"eager\" | \"lazy\",\n  toggleLoaded?: (loaded: boolean) => void,\n  cacheKey?: string,\n  ref?: RefObject<HTMLImageElement>,\n  style: CSSProperties = {}\n): Partial<MainImageProps> {\n  const onLoad: ReactEventHandler<HTMLImageElement> = function (e) {\n    if (isLoaded) {\n      return\n    }\n\n    storeImageloaded(cacheKey)\n\n    const target = e.currentTarget\n    const img = new Image()\n    img.src = target.currentSrc\n\n    if (img.decode) {\n      // Decode the image through javascript to support our transition\n      img\n        .decode()\n        .catch(() => {\n          // ignore error, we just go forward\n        })\n        .then(() => {\n          toggleLoaded(true)\n        })\n    } else {\n      toggleLoaded(true)\n    }\n  }\n\n  // Polyfill \"object-fit\" if unsupported (mostly IE)\n  if (ref?.current && !(`objectFit` in document.documentElement.style)) {\n    ref.current.dataset.objectFit = style.objectFit ?? `cover`\n    ref.current.dataset.objectPosition = `${style.objectPosition ?? `50% 50%`}`\n    applyPolyfill(ref)\n  }\n\n  // fallback when it's not configured in gatsby-config.\n  if (!gatsbyImageIsInstalled()) {\n    style = {\n      height: `100%`,\n      left: 0,\n      position: `absolute`,\n      top: 0,\n      transform: `translateZ(0)`,\n      transition: `opacity 250ms linear`,\n      width: `100%`,\n      willChange: `opacity`,\n      ...style,\n    }\n  }\n\n  const result = {\n    ...images,\n    loading,\n    shouldLoad: isLoading,\n    \"data-main-image\": ``,\n    style: {\n      ...style,\n      opacity: isLoaded ? 1 : 0,\n    },\n    onLoad,\n    ref,\n  }\n\n  return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes<HTMLImageElement> &\n  Pick<PlaceholderProps, \"sources\" | \"fallback\"> & {\n    \"data-placeholder-image\"?: string\n  }\n\nexport function getPlaceholderProps(\n  placeholder: PlaceholderImageAttrs | undefined,\n  isLoaded: boolean,\n  layout: Layout,\n  width?: number,\n  height?: number,\n  backgroundColor?: string,\n  objectFit?: CSSProperties[\"objectFit\"],\n  objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n  const wrapperStyle: CSSProperties = {}\n\n  if (backgroundColor) {\n    wrapperStyle.backgroundColor = backgroundColor\n\n    if (layout === `fixed`) {\n      wrapperStyle.width = width\n      wrapperStyle.height = height\n      wrapperStyle.backgroundColor = backgroundColor\n      wrapperStyle.position = `relative`\n    } else if (layout === `constrained`) {\n      wrapperStyle.position = `absolute`\n      wrapperStyle.top = 0\n      wrapperStyle.left = 0\n      wrapperStyle.bottom = 0\n      wrapperStyle.right = 0\n    } else if (layout === `fullWidth`) {\n      wrapperStyle.position = `absolute`\n      wrapperStyle.top = 0\n      wrapperStyle.left = 0\n      wrapperStyle.bottom = 0\n      wrapperStyle.right = 0\n    }\n  }\n\n  if (objectFit) {\n    wrapperStyle.objectFit = objectFit\n  }\n\n  if (objectPosition) {\n    wrapperStyle.objectPosition = objectPosition\n  }\n  const result: PlaceholderImageAttrs = {\n    ...placeholder,\n    \"aria-hidden\": true,\n    \"data-placeholder-image\": ``,\n    style: {\n      opacity: isLoaded ? 0 : 1,\n      transition: `opacity 500ms linear`,\n      ...wrapperStyle,\n    },\n  }\n\n  // fallback when it's not configured in gatsby-config.\n  if (!gatsbyImageIsInstalled()) {\n    result.style = {\n      height: `100%`,\n      left: 0,\n      position: `absolute`,\n      top: 0,\n      width: `100%`,\n    }\n  }\n\n  return result\n}\n\nexport function useImageLoaded(\n  cacheKey: string,\n  loading: \"lazy\" | \"eager\",\n  ref: any\n): {\n  isLoaded: boolean\n  isLoading: boolean\n  toggleLoaded: Dispatch<SetStateAction<boolean>>\n} {\n  const [isLoaded, toggleLoaded] = useState(false)\n  const [isLoading, toggleIsLoading] = useState(loading === `eager`)\n\n  const rAF =\n    typeof window !== `undefined` && `requestAnimationFrame` in window\n      ? requestAnimationFrame\n      : function (cb: TimerHandler): number {\n          return setTimeout(cb, 16)\n        }\n  const cRAF =\n    typeof window !== `undefined` && `cancelAnimationFrame` in window\n      ? cancelAnimationFrame\n      : clearTimeout\n\n  useEffect(() => {\n    let interval: number\n    // @see https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback/50019873#50019873\n    function toggleIfRefExists(): void {\n      if (ref.current) {\n        if (loading === `eager` && ref.current.complete) {\n          storeImageloaded(cacheKey)\n          toggleLoaded(true)\n        } else {\n          toggleIsLoading(true)\n        }\n      } else {\n        interval = rAF(toggleIfRefExists)\n      }\n    }\n    toggleIfRefExists()\n\n    return (): void => {\n      cRAF(interval)\n    }\n  }, [])\n\n  return {\n    isLoading,\n    isLoaded,\n    toggleLoaded,\n  }\n}\n\nexport interface IArtDirectedImage {\n  media: string\n  image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n  defaultImage: IGatsbyImageData,\n  artDirected: Array<IArtDirectedImage>\n): IGatsbyImageData {\n  const { images, placeholder, ...props } = defaultImage\n  const output: IGatsbyImageData = {\n    ...props,\n    images: {\n      ...images,\n      sources: [],\n    },\n    placeholder: placeholder && {\n      ...placeholder,\n      sources: [],\n    },\n  }\n\n  artDirected.forEach(({ media, image }) => {\n    if (!media) {\n      if (process.env.NODE_ENV === `development`) {\n        console.warn(\n          \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n        )\n      }\n      return\n    }\n\n    if (\n      image.layout !== defaultImage.layout &&\n      process.env.NODE_ENV === `development`\n    ) {\n      console.warn(\n        `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n      )\n    }\n\n    output.images.sources.push(\n      ...image.images.sources.map(source => {\n        return { ...source, media }\n      }),\n      {\n        media,\n        srcSet: image.images.fallback.srcSet,\n      }\n    )\n\n    if (!output.placeholder) {\n      return\n    }\n\n    output.placeholder.sources.push({\n      media,\n      srcSet: image.placeholder.fallback,\n    })\n  })\n  output.images.sources.push(...images.sources)\n  if (placeholder?.sources) {\n    output.placeholder?.sources.push(...placeholder.sources)\n  }\n  return output\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"../global.d.ts\" />\n\nimport React, { Fragment, FunctionComponent } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n  layout: Layout\n  width: number\n  height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n  <script\n    type=\"module\"\n    dangerouslySetInnerHTML={{\n      __html: terserMacro`\nconst hasNativeLazyLoadSupport = typeof HTMLImageElement !== \"undefined\" && \"loading\" in HTMLImageElement.prototype;\nif (hasNativeLazyLoadSupport) {\n  const gatsbyImages = document.querySelectorAll('img[data-main-image]');\n  for (let mainImage of gatsbyImages) {\n    if (mainImage.dataset.src) {\n      mainImage.setAttribute('src', mainImage.dataset.src)\n      mainImage.removeAttribute('data-src')\n    }\n    if (mainImage.dataset.srcset) {\n      mainImage.setAttribute('srcset', mainImage.dataset.srcset)\n      mainImage.removeAttribute('data-srcset')\n    }\n\n    const sources = mainImage.parentNode.querySelectorAll('source[data-srcset]');\n    for (let source of sources) {\n      source.setAttribute('srcset', source.dataset.srcset)\n      source.removeAttribute('data-srcset')\n    }\n\n    if (mainImage.complete) {\n      mainImage.style.opacity = 1;\n    }\n  }\n}\n`,\n    }}\n  />\n)\n\nexport function getSizer(\n  layout: Layout,\n  width: number,\n  height: number\n): string {\n  let sizer: string | null = null\n  if (layout === `fullWidth`) {\n    sizer = `<div aria-hidden=\"true\" style=\"padding-top: ${\n      (height / width) * 100\n    }%;\"></div>`\n  }\n  if (layout === `constrained`) {\n    sizer = `<div style=\"max-width: ${width}px; display: block;\"><img alt=\"\" role=\"presentation\" aria-hidden=\"true\" src=\"data:image/svg+xml;charset=utf-8,%3Csvg height='${height}' width='${width}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E\" style=\"max-width: 100%; display: block; position: static;\"></div>`\n  }\n  return sizer\n}\n\nconst Sizer: FunctionComponent<ILayoutWrapperProps> = function Sizer({\n  layout,\n  width,\n  height,\n}) {\n  if (layout === `fullWidth`) {\n    return (\n      <div aria-hidden style={{ paddingTop: `${(height / width) * 100}%` }} />\n    )\n  }\n  if (layout === `constrained`) {\n    return (\n      <div style={{ maxWidth: width, display: `block` }}>\n        <img\n          alt=\"\"\n          role=\"presentation\"\n          aria-hidden=\"true\"\n          src={`data:image/svg+xml;charset=utf-8,%3Csvg height='${height}' width='${width}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E`}\n          style={{\n            maxWidth: `100%`,\n            display: `block`,\n            position: `static`,\n          }}\n        />\n      </div>\n    )\n  }\n\n  return null\n}\n\nexport const LayoutWrapper: FunctionComponent<ILayoutWrapperProps> =\n  function LayoutWrapper({ children, ...props }) {\n    return (\n      <Fragment>\n        <Sizer {...props} />\n        {children}\n\n        {\n          // eslint-disable-next-line no-undef\n          SERVER && <NativeScriptLoading />\n        }\n      </Fragment>\n    )\n  }\n","/* eslint-disable filenames/match-regex */\nimport React, {\n  FunctionComponent,\n  ImgHTMLAttributes,\n  forwardRef,\n  LegacyRef,\n} from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n  sizes?: string\n  srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n  (\n    | {\n        media: string\n        type?: string\n      }\n    | {\n        media?: string\n        type: string\n      }\n  )\n\ntype FallbackProps = { src: string } & Partial<IResponsiveImageProps>\n\ntype ImageProps = ImgHTMLAttributes<HTMLImageElement> & {\n  src: string\n  alt: string\n  shouldLoad: boolean\n  innerRef: LegacyRef<HTMLImageElement>\n}\n\nexport type PictureProps = ImgHTMLAttributes<HTMLImageElement> & {\n  fallback?: FallbackProps\n  sources?: Array<SourceProps>\n  alt: string\n  shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent<ImageProps> = function Image({\n  src,\n  srcSet,\n  loading,\n  alt = ``,\n  shouldLoad,\n  innerRef,\n  ...props\n}) {\n  return (\n    <img\n      {...props}\n      decoding=\"async\"\n      loading={loading}\n      src={shouldLoad ? src : undefined}\n      data-src={!shouldLoad ? src : undefined}\n      srcSet={shouldLoad ? srcSet : undefined}\n      data-srcset={!shouldLoad ? srcSet : undefined}\n      alt={alt}\n      ref={innerRef}\n    />\n  )\n}\n\nexport const Picture = forwardRef<HTMLImageElement, PictureProps>(\n  function Picture(\n    { fallback, sources = [], shouldLoad = true, ...props },\n    ref\n  ) {\n    const sizes = props.sizes || fallback?.sizes\n    const fallbackImage = (\n      <Image\n        {...props}\n        {...fallback}\n        sizes={sizes}\n        shouldLoad={shouldLoad}\n        innerRef={ref}\n      />\n    )\n\n    if (!sources.length) {\n      return fallbackImage\n    }\n\n    return (\n      <picture>\n        {sources.map(({ media, srcSet, type }) => (\n          <source\n            key={`${media}-${type}-${srcSet}`}\n            type={type}\n            media={media}\n            srcSet={shouldLoad ? srcSet : undefined}\n            data-srcset={!shouldLoad ? srcSet : undefined}\n            sizes={sizes}\n          />\n        ))}\n        {fallbackImage}\n      </picture>\n    )\n  }\n)\n\nImage.propTypes = {\n  src: PropTypes.string.isRequired,\n  alt: PropTypes.string.isRequired,\n  sizes: PropTypes.string,\n  srcSet: PropTypes.string,\n  shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n  alt: PropTypes.string.isRequired,\n  shouldLoad: PropTypes.bool,\n  fallback: PropTypes.exact({\n    src: PropTypes.string.isRequired,\n    srcSet: PropTypes.string,\n    sizes: PropTypes.string,\n  }),\n  sources: PropTypes.arrayOf(\n    PropTypes.oneOfType([\n      PropTypes.exact({\n        media: PropTypes.string.isRequired,\n        type: PropTypes.string,\n        sizes: PropTypes.string,\n        srcSet: PropTypes.string.isRequired,\n      }),\n      PropTypes.exact({\n        media: PropTypes.string,\n        type: PropTypes.string.isRequired,\n        sizes: PropTypes.string,\n        srcSet: PropTypes.string.isRequired,\n      }),\n    ])\n  ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes<HTMLImageElement> & {\n  fallback?: string\n  sources?: Array<SourceProps>\n}\n\nexport const Placeholder: FunctionComponent<PlaceholderProps> =\n  function Placeholder({ fallback, ...props }) {\n    if (fallback) {\n      return (\n        <Picture\n          {...props}\n          fallback={{\n            src: fallback,\n          }}\n          aria-hidden\n          alt=\"\"\n        />\n      )\n    } else {\n      return <div {...props}></div>\n    }\n  }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n  fallback: PropTypes.string,\n  sources: Picture.propTypes?.sources,\n  alt: function (props, propName, componentName): Error | null {\n    if (!props[propName]) {\n      return null\n    }\n    return new Error(\n      `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n    )\n  },\n}\n","import React, { forwardRef } from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage = forwardRef<HTMLImageElement, MainImageProps>(\n  function MainImage(props, ref) {\n    return (\n      <>\n        <Picture ref={ref} {...props} />\n        <noscript>\n          <Picture {...props} shouldLoad={true} />\n        </noscript>\n      </>\n    )\n  }\n)\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React, {\n  ElementType,\n  FunctionComponent,\n  CSSProperties,\n  WeakValidationMap,\n} from \"react\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImageHydrator: FunctionComponent<{\n  as?: ElementType\n  style?: CSSProperties\n  className?: string\n}> = function GatsbyImageHydrator({ as: Type = `div`, children, ...props }) {\n  return <Type {...props}>{children}</Type>\n}\n\nexport const GatsbyImage: FunctionComponent<GatsbyImageProps> =\n  function GatsbyImage({\n    as,\n    className,\n    class: preactClass,\n    style,\n    image,\n    loading = `lazy`,\n    imgClassName,\n    imgStyle,\n    backgroundColor,\n    objectFit,\n    objectPosition,\n    ...props\n  }) {\n    if (!image) {\n      console.warn(`[gatsby-plugin-image] Missing image prop`)\n      return null\n    }\n    if (preactClass) {\n      className = preactClass\n    }\n    imgStyle = {\n      objectFit,\n      objectPosition,\n      backgroundColor,\n      ...imgStyle,\n    }\n\n    const {\n      width,\n      height,\n      layout,\n      images,\n      placeholder,\n      backgroundColor: placeholderBackgroundColor,\n    } = image\n\n    const {\n      style: wStyle,\n      className: wClass,\n      ...wrapperProps\n    } = getWrapperProps(width, height, layout)\n\n    const cleanedImages: IGatsbyImageData[\"images\"] = {\n      fallback: undefined,\n      sources: [],\n    }\n    if (images.fallback) {\n      cleanedImages.fallback = {\n        ...images.fallback,\n        srcSet: images.fallback.srcSet\n          ? removeNewLines(images.fallback.srcSet)\n          : undefined,\n      }\n    }\n\n    if (images.sources) {\n      cleanedImages.sources = images.sources.map(source => {\n        return {\n          ...source,\n          srcSet: removeNewLines(source.srcSet),\n        }\n      })\n    }\n\n    return (\n      <GatsbyImageHydrator\n        {...wrapperProps}\n        as={as}\n        style={{\n          ...wStyle,\n          ...style,\n          backgroundColor,\n        }}\n        className={`${wClass}${className ? ` ${className}` : ``}`}\n      >\n        <LayoutWrapper layout={layout} width={width} height={height}>\n          <Placeholder\n            {...getPlaceholderProps(\n              placeholder,\n              false,\n              layout,\n              width,\n              height,\n              placeholderBackgroundColor,\n              objectFit,\n              objectPosition\n            )}\n          />\n\n          <MainImage\n            data-gatsby-image-ssr=\"\"\n            className={imgClassName}\n            {...(props as Omit<MainImageProps, \"images\" | \"fallback\">)}\n            // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n            {...getMainProps(\n              loading === `eager`,\n              false,\n              cleanedImages,\n              loading,\n              undefined,\n              undefined,\n              undefined,\n              imgStyle\n            )}\n          />\n        </LayoutWrapper>\n      </GatsbyImageHydrator>\n    )\n  }\n\nexport const altValidator: PropTypes.Validator<string> = (\n  props: GatsbyImageProps,\n  propName,\n  componentName,\n  ...rest\n): Error | undefined => {\n  if (!props.alt && props.alt !== ``) {\n    return new Error(\n      `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n    )\n  }\n  return PropTypes.string(props, propName, componentName, ...rest)\n}\nexport const propTypes = {\n  image: PropTypes.object.isRequired,\n  alt: altValidator,\n} as WeakValidationMap<GatsbyImageProps>\n","/* eslint-disable no-unused-expressions */\nimport React, {\n  Component,\n  ElementType,\n  createRef,\n  MutableRefObject,\n  FunctionComponent,\n  ImgHTMLAttributes,\n  RefObject,\n  CSSProperties,\n} from \"react\"\nimport {\n  getWrapperProps,\n  hasNativeLazyLoadSupport,\n  storeImageloaded,\n  hasImageLoaded,\n  gatsbyImageIsInstalled,\n} from \"./hooks\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport { Layout } from \"../image-utils\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport { Unobserver } from \"./intersection-observer\"\nimport { render } from \"react-dom\"\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n  extends Omit<\n    ImgHTMLAttributes<HTMLImageElement>,\n    \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n  > {\n  alt: string\n  as?: ElementType\n  className?: string\n  class?: string\n  imgClassName?: string\n  image: IGatsbyImageData\n  imgStyle?: CSSProperties\n  backgroundColor?: string\n  objectFit?: CSSProperties[\"objectFit\"]\n  objectPosition?: CSSProperties[\"objectPosition\"]\n  onLoad?: () => void\n  onError?: () => void\n  onStartLoad?: (props: { wasCached?: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n  layout: Layout\n  width: number\n  height: number\n  backgroundColor?: string\n  images: Pick<MainImageProps, \"sources\" | \"fallback\">\n  placeholder?: Pick<PlaceholderProps, \"sources\" | \"fallback\">\n}\n\nclass GatsbyImageHydrator extends Component<\n  GatsbyImageProps,\n  { isLoading: boolean; isLoaded: boolean }\n> {\n  root: RefObject<HTMLImageElement | undefined> = createRef<\n    HTMLImageElement | undefined\n  >()\n  hydrated: MutableRefObject<boolean> = { current: false }\n  forceRender: MutableRefObject<boolean> = {\n    // In dev we use render not hydrate, to avoid hydration warnings\n    current: process.env.NODE_ENV === `development`,\n  }\n  lazyHydrator: () => void | null = null\n  ref = createRef<HTMLImageElement>()\n  unobserveRef: Unobserver\n\n  constructor(props) {\n    super(props)\n\n    this.state = {\n      isLoading: hasNativeLazyLoadSupport(),\n      isLoaded: false,\n    }\n  }\n\n  _lazyHydrate(props, state): Promise<void> {\n    const hasSSRHtml = this.root.current.querySelector(\n      `[data-gatsby-image-ssr]`\n    )\n    // On first server hydration do nothing\n    if (hasNativeLazyLoadSupport() && hasSSRHtml && !this.hydrated.current) {\n      this.hydrated.current = true\n      return Promise.resolve()\n    }\n\n    return import(`./lazy-hydrate`).then(({ lazyHydrate }) => {\n      const cacheKey = JSON.stringify(this.props.image.images)\n      this.lazyHydrator = lazyHydrate(\n        {\n          image: props.image.images,\n          isLoading: state.isLoading || hasImageLoaded(cacheKey),\n          isLoaded: state.isLoaded || hasImageLoaded(cacheKey),\n          toggleIsLoaded: () => {\n            props.onLoad?.()\n\n            this.setState({\n              isLoaded: true,\n            })\n          },\n          ref: this.ref,\n          ...props,\n        },\n        this.root,\n        this.hydrated,\n        this.forceRender\n      )\n    })\n  }\n\n  /**\n   * Choose if setupIntersectionObserver should use the image cache or not.\n   */\n  _setupIntersectionObserver(useCache = true): void {\n    import(`./intersection-observer`).then(({ createIntersectionObserver }) => {\n      const intersectionObserver = createIntersectionObserver(() => {\n        if (this.root.current) {\n          const cacheKey = JSON.stringify(this.props.image.images)\n          this.props.onStartLoad?.({\n            wasCached: useCache && hasImageLoaded(cacheKey),\n          })\n          this.setState({\n            isLoading: true,\n            isLoaded: useCache && hasImageLoaded(cacheKey),\n          })\n        }\n      })\n\n      if (this.root.current) {\n        this.unobserveRef = intersectionObserver(this.root)\n      }\n    })\n  }\n\n  shouldComponentUpdate(nextProps, nextState): boolean {\n    let hasChanged = false\n    if (!this.state.isLoading && nextState.isLoading && !nextState.isLoaded) {\n      // Props have changed between SSR and hydration, so we need to force render instead of hydrate\n      this.forceRender.current = true\n    }\n    // this check mostly means people do not have the correct ref checks in place, we want to reset some state to suppport loading effects\n    if (this.props.image.images !== nextProps.image.images) {\n      // reset state, we'll rely on intersection observer to reload\n      if (this.unobserveRef) {\n        // unregister intersectionObserver\n        this.unobserveRef()\n\n        // // on unmount, make sure we cleanup\n        if (this.hydrated.current && this.lazyHydrator) {\n          render(null, this.root.current)\n        }\n      }\n\n      this.setState(\n        {\n          isLoading: false,\n          isLoaded: false,\n        },\n        () => {\n          this._setupIntersectionObserver(false)\n        }\n      )\n\n      hasChanged = true\n    }\n\n    if (this.root.current && !hasChanged) {\n      this._lazyHydrate(nextProps, nextState)\n    }\n\n    return false\n  }\n\n  componentDidMount(): void {\n    if (this.root.current) {\n      const ssrElement = this.root.current.querySelector(\n        `[data-gatsby-image-ssr]`\n      ) as HTMLImageElement\n      const cacheKey = JSON.stringify(this.props.image.images)\n\n      // when SSR and native lazyload is supported we'll do nothing ;)\n      if (\n        hasNativeLazyLoadSupport() &&\n        ssrElement &&\n        gatsbyImageIsInstalled()\n      ) {\n        this.props.onStartLoad?.({ wasCached: false })\n\n        // When the image is already loaded before we have hydrated, we trigger onLoad and cache the item\n        if (ssrElement.complete) {\n          this.props.onLoad?.()\n          storeImageloaded(cacheKey)\n        } else {\n          // We need the current class context (this) inside our named onLoad function\n          // The named function is necessary to easily remove the listener afterward.\n          // eslint-disable-next-line @typescript-eslint/no-this-alias\n          const _this = this\n          // add an onLoad to the image\n          ssrElement.addEventListener(`load`, function onLoad() {\n            ssrElement.removeEventListener(`load`, onLoad)\n\n            _this.props.onLoad?.()\n            storeImageloaded(cacheKey)\n          })\n        }\n\n        return\n      }\n\n      // Fallback to custom lazy loading (intersection observer)\n      this._setupIntersectionObserver(true)\n    }\n  }\n\n  componentWillUnmount(): void {\n    // Cleanup when onmount happens\n    if (this.unobserveRef) {\n      // unregister intersectionObserver\n      this.unobserveRef()\n\n      // on unmount, make sure we cleanup\n      if (this.hydrated.current && this.lazyHydrator) {\n        this.lazyHydrator()\n      }\n    }\n\n    return\n  }\n\n  render(): JSX.Element {\n    const Type = this.props.as || `div`\n    const { width, height, layout } = this.props.image\n    const {\n      style: wStyle,\n      className: wClass,\n      ...wrapperProps\n    } = getWrapperProps(width, height, layout)\n\n    let className = this.props.className\n    // preact class\n    if (this.props.class) {\n      className = this.props.class\n    }\n\n    const sizer = getSizer(layout, width, height)\n\n    return (\n      <Type\n        {...wrapperProps}\n        style={{\n          ...wStyle,\n          ...this.props.style,\n          backgroundColor: this.props.backgroundColor,\n        }}\n        className={`${wClass}${className ? ` ${className}` : ``}`}\n        ref={this.root}\n        dangerouslySetInnerHTML={{\n          __html: sizer,\n        }}\n        suppressHydrationWarning\n      />\n    )\n  }\n}\n\nexport const GatsbyImage: FunctionComponent<GatsbyImageProps> =\n  function GatsbyImage(props) {\n    if (!props.image) {\n      if (process.env.NODE_ENV === `development`) {\n        console.warn(`[gatsby-plugin-image] Missing image prop`)\n      }\n      return null\n    }\n\n    if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n      console.warn(\n        `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n      )\n    }\n    const { className, class: classSafe, backgroundColor, image } = props\n    const { width, height, layout } = image\n    const propsKey = JSON.stringify([\n      width,\n      height,\n      layout,\n      className,\n      classSafe,\n      backgroundColor,\n    ])\n    return <GatsbyImageHydrator key={propsKey} {...props} />\n  }\n\nGatsbyImage.propTypes = propTypes\n\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n  altValidator,\n  GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n  extends Omit<GatsbyImageProps, \"image\">,\n    Omit<ISharpGatsbyImageArgs, \"backgroundColor\"> {\n  src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n  __imageData?: IGatsbyImageData\n  __error?: string\n}\n\nexport function _getStaticImage(\n  GatsbyImage: FunctionComponent<GatsbyImageProps>\n): React.FC<IStaticImageProps & IPrivateProps> {\n  return function StaticImage({\n    src,\n    __imageData: imageData,\n    __error,\n    // We extract these because they're not meant to be passed-down to GatsbyImage\n    /* eslint-disable @typescript-eslint/no-unused-vars */\n    width,\n    height,\n    aspectRatio,\n    tracedSVGOptions,\n    placeholder,\n    formats,\n    quality,\n    transformOptions,\n    jpgOptions,\n    pngOptions,\n    webpOptions,\n    avifOptions,\n    blurredOptions,\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n    ...props\n  }): ReactElement {\n    if (__error) {\n      console.warn(__error)\n    }\n\n    if (imageData) {\n      return <GatsbyImage image={imageData} {...props} />\n    }\n    console.warn(`Image not loaded`, src)\n    if (!__error && process.env.NODE_ENV === `development`) {\n      console.warn(\n        `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n      )\n    }\n    return null\n  }\n}\n\nconst StaticImage: React.FC<IStaticImageProps & IPrivateProps> =\n  _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator<number> = (\n  props: IStaticImageProps & IPrivateProps,\n  propName: keyof IStaticImageProps & IPrivateProps,\n  ...rest\n) => {\n  if (\n    props.layout === `fullWidth` &&\n    (propName === `width` || propName === `height`) &&\n    props[propName]\n  ) {\n    return new Error(\n      `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n    )\n  }\n  return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n  src: PropTypes.string.isRequired,\n  alt: altValidator,\n  width: checkDimensionProps,\n  height: checkDimensionProps,\n  sizes: PropTypes.string,\n  layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n    if (props.layout === undefined) {\n      return undefined\n    }\n    if (validLayouts.has(props.layout)) {\n      return undefined\n    }\n\n    return new Error(\n      `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n    )\n  },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n  GatsbyImage as GatsbyImageBrowser,\n  IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n  _getStaticImage,\n  propTypes,\n  IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n  __imageData?: IGatsbyImageData\n  __error?: string\n}\n\nconst StaticImage: React.FC<IStaticImageProps & IPrivateProps> =\n  _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import * as React from \"react\"\nexport function LaterHydrator({\n  children,\n}: React.PropsWithChildren<Record<string, unknown>>): React.ReactNode {\n  React.useEffect(() => {\n    // eslint-disable-next-line no-unused-expressions\n    import(`./lazy-hydrate`)\n  }, [])\n\n  return children\n}\n","import React from \"react\"\nimport { LaterHydrator } from \".\"\n\nexport function wrapRootElement({ element }) {\n  return <LaterHydrator>{element}</LaterHydrator>\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.replaceHydrateFunction = void 0;\n\nvar _reactDom = require(\"react-dom\");\n\nvar _component = require(\"@loadable/component\");\n\nconst replaceHydrateFunction = (_, options) => (element, container, callback) => {\n  (0, _component.loadableReady)(() => {\n    const renderFn = typeof options.useHydrate === \"undefined\" ? // Using ReactDOM.hydrate on develop will throw an error in console\n    process.env.BUILD_STAGE.includes(\"develop\") ? _reactDom.render : _reactDom.hydrate : !!options.useHydrate ? _reactDom.hydrate : _reactDom.render;\n    renderFn(element, container, callback);\n  });\n};\n\nexports.replaceHydrateFunction = replaceHydrateFunction;","/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\nimport { withPrefix } from \"gatsby\";\nimport getManifestForPathname from \"./get-manifest-pathname\"; // when we don't have localisation in our manifest, we tree shake everything away\n\nexport const onRouteUpdate = function onRouteUpdate({\n  location\n}, pluginOptions) {\n  if (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n    const {\n      localize\n    } = pluginOptions;\n    const manifestFilename = getManifestForPathname(location.pathname, localize, true);\n    const manifestEl = document.head.querySelector(`link[rel=\"manifest\"]`);\n\n    if (manifestEl) {\n      manifestEl.setAttribute(`href`, withPrefix(manifestFilename));\n    }\n  }\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _gatsby = require(\"gatsby\");\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @param {boolean} shouldPrependPathPrefix\n * @return string\n */\nvar _default = (pathname, localizedManifests, shouldPrependPathPrefix = false) => {\n  const defaultFilename = `manifest.webmanifest`;\n\n  if (!Array.isArray(localizedManifests)) {\n    return defaultFilename;\n  }\n\n  const localizedManifest = localizedManifests.find(app => {\n    let startUrl = app.start_url;\n\n    if (shouldPrependPathPrefix) {\n      startUrl = (0, _gatsby.withPrefix)(startUrl);\n    }\n\n    return pathname.startsWith(startUrl);\n  });\n\n  if (!localizedManifest) {\n    return defaultFilename;\n  }\n\n  return `manifest_${localizedManifest.lang}.webmanifest`;\n};\n\nexports.default = _default;","import * as React from 'react'\n\nexport default { React }","import React, { createContext, useContext } from \"react\"\n\nconst GatsbyMDXScopeContext = createContext({})\n\nexport const useMDXScope = scope => {\n  const contextScope = useContext(GatsbyMDXScopeContext)\n  return scope || contextScope\n}\n\nexport const MDXScopeProvider = ({ __mdxScope, children }) =>\n  React.createElement(\n    GatsbyMDXScopeContext.Provider,\n    { value: __mdxScope },\n    children\n  )\n","var scope_0 = require('/codebuild/output/src3414018106/src/sp-website/.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/bb371b604cd58d6bdc41f05f30d23fb7.js').default;export default\n        Object.assign({}, scope_0 )\n    ","import React from \"react\"\nimport { MDXProvider, withMDXComponents } from \"@mdx-js/react\"\nimport { MDXScopeProvider } from \"./context\"\n\n/**\n * so, this import is weird right?\n *\n * # What it looks like:\n * we're importing a webpack loader directly into our runtime bundle\n *\n * # What it's actually doing:\n * We configure the `mdx-components` loader in gatsby-node's\n * `onCreateWebpackConfig`. The configuration sets the loader to handle its\n * own file, so if we import `./loaders/mdx-components`, the `mdx-components`\n * loader handles loading itself.\n *\n * # Why does this work?\n * The loader doesn't use the file argument to itself and instead returns\n * a generated file that includes the `gatsby-config` mdxPlugins wrapped in\n * require() statements. This results in the `mdxPlugins` being required\n * and available to the code after this import.\n *\n * # Have a better solution to this?\n * Submit a PR\n */\nimport { plugins as mdxPlugins } from \"./loaders/mdx-components\"\nimport scopeContexts from \"./loaders/mdx-scopes\"\n\nconst componentsAndGuards = {}\n\nconst componentFromGuards = arr =>\n  function GatsbyMDXComponentFinder(props) {\n    const { Component } = arr.find(({ guard }) => (guard ? guard(props) : true))\n    return <Component {...props} />\n  }\n\nmdxPlugins.forEach(({ guards = {}, components }) => {\n  Object.entries(components).forEach(([componentName, Component]) => {\n    if (componentsAndGuards[componentName]) {\n      componentsAndGuards.push({ guard: guards[componentName], Component })\n    } else {\n      componentsAndGuards[componentName] = [\n        { guard: guards[componentName], Component },\n      ]\n    }\n  })\n})\n\nconst components = Object.entries(componentsAndGuards)\n  .map(([name, arr]) => {\n    return {\n      [name]: componentFromGuards(\n        arr.concat({ guard: undefined, Component: name })\n      ),\n    }\n  })\n  .reduce((acc, obj) => {\n    return { ...acc, ...obj }\n  }, {})\n\n// merge any components in wrapRootElement above this wrapRoot\nconst MDXConsumer = withMDXComponents(\n  ({ components: componentsFromContext, children }) => (\n    <MDXScopeProvider __mdxScope={scopeContexts}>\n      <MDXProvider components={{ ...componentsFromContext, ...components }}>\n        {children}\n      </MDXProvider>\n    </MDXScopeProvider>\n  )\n)\n\nconst WrapRootElement = ({ element }) => <MDXConsumer>{element}</MDXConsumer>\n\nexport default WrapRootElement\n","import wrap from \"./wrap-root-element\"\nexport const wrapRootElement = wrap\n","/**\n * Welcome to gatsby-plugin-mdx!\n *\n * Start reading in gatsby-node.js\n */\n\nconst MDXRenderer = require(`./mdx-renderer`)\n\nmodule.exports = {\n  MDXRenderer: MDXRenderer,\n}\n","const React = require(`react`)\nconst { mdx } = require(`@mdx-js/react`)\nconst { useMDXScope } = require(`./context`)\n\nmodule.exports = function MDXRenderer({\n  scope,\n  children,\n  ...props\n}) {\n  const mdxScope = useMDXScope(scope)\n\n  // Memoize the compiled component\n  const End = React.useMemo(() => {\n    if (!children) {\n      return null\n    }\n\n    const fullScope = {\n      // React is here just in case the user doesn't pass them in\n      // in a manual usage of the renderer\n      React,\n      mdx,\n      ...mdxScope,\n    }\n\n    const keys = Object.keys(fullScope)\n    const values = keys.map(key => fullScope[key])\n    const fn = new Function(`_fn`, ...keys, `${children}`)\n\n    return fn({}, ...values)\n  }, [children, scope])\n\n  return React.createElement(End, {...props })\n}\n","module.exports = {plugins: []}","import { graphql } from 'gatsby';\nimport React, { HTMLProps, ReactNode } from 'react';\nimport { useDarkness } from '../../hooks/useDarkness';\nimport Link, { LinkProps } from '../link/Link';\n\nexport type StrapiApiButton = {\n  id?: string;\n  title?: string;\n  type?: 'primary' | 'secondary' | 'outline' | 'link' | 'custom';\n  link?: string;\n  small?: boolean;\n};\n\nexport type ButtonProps = {\n  children?: ReactNode;\n} & StrapiApiButton &\n  (LinkProps<any> | HTMLProps<HTMLButtonElement>);\n\nexport default function Button({\n  children,\n  type = 'primary',\n  link,\n  className = '',\n  title,\n  small = false,\n  onClick,\n  ...props\n}: ButtonProps) {\n  let btnClass = `${className} uppercase tracking-wide`;\n\n  if (type !== 'link') {\n    btnClass = `${\n      small ? 'px-6 py-2 text-sm rounded-md' : 'px-6 py-2 rounded-lg'\n    } font-bold transition-colors border ${btnClass}`;\n  }\n\n  if (type === 'custom') {\n  } else if (type === 'primary') {\n    btnClass = `${btnClass} border-black bg-black text-white hover:bg-slate-900 hover:border-slate-900 dark:border-white dark:bg-white dark:hover:bg-slate-200 dark:hover:border-slate-200 dark:text-slate-800`;\n  } else if (type === 'secondary') {\n    btnClass = `${btnClass} border-slate-200 bg-slate-200 text-slate-600 hover:bg-slate-300 hover:border-slate-300 dark:border-slate-700 dark:bg-slate-700 dark:text-slate-300 dark:hover:bg-slate-800 dark:hover:border-slate-800`;\n  } else if (type === 'outline') {\n    btnClass = `${btnClass} border-2 border-black text-black rounded-lg hover:bg-black hover:text-white dark:border-white dark:text-white dark:rounded-lg dark:hover:bg-white dark:hover:text-slate-800`;\n  }\n\n  if (onClick || !link) {\n    //@ts-ignore\n    return (\n      <button\n        type=\"button\"\n        onClick={onClick}\n        className={btnClass}\n        title={title}\n        {...(props as HTMLProps<HTMLButtonElement>)}\n      >\n        {children ?? title}\n      </button>\n    );\n  }\n\n  return (\n    <Link\n      to={link}\n      className={btnClass}\n      title={title}\n      {...(props as LinkProps<any>)}\n    >\n      {children ?? title}\n    </Link>\n  );\n}\n\nexport const query = graphql`\n  fragment Button on STRAPI__COMPONENT_COMPONENTS_BUTTON {\n    id\n    title\n    link\n    type\n  }\n`;\n","import React, { ComponentType, ReactComponentElement, ReactNode } from \"react\";\nimport { useDarkness } from \"../../hooks/useDarkness\";\n\nexport type CardProps = {\n    children: ReactNode;\n    flat?: boolean;\n    className?: string;\n};\n\nexport default function Card({\n    children,\n    flat = false,\n    className = ''\n}: CardProps) {\n    const backgroundStyles = 'border-slate-300 bg-slate-100 dark:border-slate-700 dark:bg-slate-800';\n    const textStyles = 'text-slate-900 dark:text-white';\n\n    return <div className={`${textStyles} w-full ${flat ? '' : `rounded-xl border-2 transition-all ${backgroundStyles}`} ${className}`}>\n        {children}\n    </div>\n}","import { graphql, useStaticQuery } from \"gatsby\";\nimport { GatsbyImage, GatsbyImageProps, getImage } from \"gatsby-plugin-image\";\nimport React, { useMemo } from \"react\";\n\nexport type LocalImageProps = {\n    src: string;\n    alt?: string;\n} & Omit<GatsbyImageProps, 'image'|'alt'>;\n\nexport default function LocalImage({src, alt, ...props}: LocalImageProps) {\n    const { allFile } = useStaticQuery(graphql`\n        query {\n            allFile(\n                filter: {\n                extension: { in: [\"svg\", \"jpeg\", \"jpg\", \"png\"] }\n                sourceInstanceName: { eq: \"images\" }\n                }\n            ) {\n                edges {\n                    node {\n                        relativePath\n                        extension\n                        name\n                        publicURL\n                        childImageSharp {\n                        gatsbyImageData(layout: FULL_WIDTH)\n                        }\n                    }\n                }\n            }\n        }\n    `);\n\n    const image = useMemo(() => {\n        if (!src) return null;\n\n        return allFile.edges.find((edge: any) => {\n        const relativeSource = src.replace(/^\\.?\\//, \"\");\n        const file = edge.node;\n\n        return (\n            relativeSource === file.relativePath ||\n            relativeSource ===\n            file.relativePath.replace(new RegExp(`\\.${file.extension}$`), \"\")\n        );\n        })?.node;\n    }, [src]);\n\n    if(!image) {\n        return null;\n    }\n\n    if (image.extension === \"svg\") {\n        return <img src={image.publicURL} alt={alt ?? image.name} {...props}/>;\n    }\n\n    return (\n        <GatsbyImage image={getImage(image)} alt={alt ?? image.name} {...props} />\n    );\n}","import { graphql } from 'gatsby';\nimport {\n  GatsbyImage,\n  GatsbyImageProps,\n  getImage,\n  ImageDataLike,\n} from 'gatsby-plugin-image';\nimport React from 'react';\n\nexport type StrapiApiImage = {\n  id: number;\n  alternativeText: string;\n  localFile: ImageDataLike & {\n    publicURL: string;\n    extension: string;\n  };\n  width: number;\n  height: number;\n};\n\nexport type StrapiImageProps = {\n  image: StrapiApiImage;\n  className: string;\n  fitWidth?: boolean;\n} & Omit<GatsbyImageProps, 'alt' | 'image' | 'className'>;\n\nexport default function StrapiImage({\n  image,\n  className,\n  fitWidth = false,\n  ...props\n}: StrapiImageProps) {\n  if (!image) return null;\n\n  if (image.localFile.extension === 'svg') {\n    return (\n      <img\n        alt={image.alternativeText}\n        src={image.localFile.publicURL}\n        className={`${fitWidth ? '' : 'w-full'} ${className}`}\n        {...props}\n      />\n    );\n  }\n\n  return (\n    <GatsbyImage\n      alt={image.alternativeText}\n      image={getImage(image.localFile)}\n      className={className}\n      {...props}\n    />\n  );\n}\n\nexport const query = graphql`\n  fragment StrapiImageConstrained on STRAPI__MEDIA {\n    id\n    alternativeText\n    localFile {\n      publicURL\n      extension\n      childImageSharp {\n        gatsbyImageData(layout: CONSTRAINED)\n      }\n    }\n  }\n\n  fragment StrapiImageFullWidth on STRAPI__MEDIA {\n    id\n    alternativeText\n    localFile {\n      publicURL\n      extension\n      childImageSharp {\n        gatsbyImageData(layout: FULL_WIDTH)\n      }\n    }\n    width\n    height\n  }\n`;\n","import React from \"react\";\nimport LocalImage, { LocalImageProps } from \"../images/LocalImage\";\n\nexport type CircleFlagProps = {\n    countryCode: string;\n} & Omit<LocalImageProps, 'src'>;\n\nexport default function CircleFlag({countryCode, ...props}: CircleFlagProps) {\n    if(!countryCode) return null;\n\n    const parts = countryCode.split('-');\n    const flagName = parts.length == 2 ? parts[1].toLowerCase() : parts[0].toLowerCase();\n\n    return (\n        <LocalImage src={`flags/${flagName}`} {...props}/>\n    );\n}","import { GatsbyLinkProps, Link as GatsbyLink } from 'gatsby';\nimport React, {\n  createContext,\n  MouseEvent,\n  PropsWithoutRef,\n  useCallback,\n  useContext,\n  useMemo,\n} from 'react';\nimport { forwardRef } from 'react';\nimport { navigate } from 'gatsby';\n\nconst isExternalLink = (path: string) => !/^\\/(?!\\/)/.test(path);\n\nexport type LinkProps<TState> = {\n  prefetchBehaviour?: PrefetchBehaviour;\n} & PropsWithoutRef<GatsbyLinkProps<TState>>;\n\nexport type LinkRef = HTMLAnchorElement & GatsbyLink<any>;\n\nexport type PrefetchBehaviour = 'default' | 'hover' | 'none';\n\nexport const PrefetchContext = createContext<PrefetchBehaviour>('default');\n\nexport const Link = forwardRef<LinkRef, LinkProps<any>>(\n  ({ to, children, prefetchBehaviour, ...props }, ref) => {\n    let prefetchBehaviourCtx = useContext(PrefetchContext);\n\n    if (prefetchBehaviour) {\n      prefetchBehaviourCtx = prefetchBehaviour;\n    }\n\n    const targetUrl = useMemo(() => {\n      if (!isExternalLink(to) && !to.endsWith('/')) {\n        return `${to}/`;\n      }\n      return to;\n    }, [to]);\n\n    const prefetch = useCallback(() => {\n      (window as any).___loader.hovering(targetUrl);\n    }, [targetUrl]);\n\n    const navigateToTarget = useCallback(\n      (e: MouseEvent) => {\n        e.preventDefault();\n        navigate(targetUrl);\n      },\n      [navigate, targetUrl]\n    );\n\n    if (props.target === '_blank') {\n      return (\n        <a\n          ref={ref}\n          {...props}\n          href={targetUrl}\n          rel=\"noopener noreferrer\"\n          target=\"_blank\"\n        >\n          {children}\n        </a>\n      );\n    }\n\n    if (isExternalLink(to)) {\n      return (\n        <a\n          ref={ref}\n          {...props}\n          href={to}\n          rel=\"noopener noreferrer\"\n          target=\"_blank\"\n        >\n          {children}\n        </a>\n      );\n    }\n\n    if (prefetchBehaviourCtx === 'default') {\n      return (\n        <GatsbyLink to={targetUrl} ref={ref} {...props}>\n          {children}\n        </GatsbyLink>\n      );\n    }\n\n    if (prefetchBehaviourCtx === 'none') {\n      return (\n        <a href={targetUrl} onClick={navigateToTarget} ref={ref} {...props}>\n          {children}\n        </a>\n      );\n    }\n\n    if (prefetchBehaviourCtx === 'hover') {\n      return (\n        <a\n          href={targetUrl}\n          onClick={navigateToTarget}\n          onMouseEnter={(e) => {\n            props.onMouseEnter && props.onMouseEnter(e);\n            prefetch();\n          }}\n          ref={ref}\n          {...props}\n        >\n          {children}\n        </a>\n      );\n    }\n  }\n);\n\nexport default Link;\n","import React, { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nexport type TranslatedProps = {\n  k: string;\n  ns?: string;\n  children?: ReactNode;\n};\n\nexport function Translated({\n  children,\n  ns = 'translation',\n  k,\n}: TranslatedProps) {\n  const { t, ready } = useTranslation(ns, { useSuspense: false });\n\n  if (!ready) {\n    return <>{children}</>;\n  }\n\n  return <>{t(k)}</>;\n}\n\nexport default Translated;\n","export { slugify } from 'transliteration';\n\nexport default function makePath(locale: string, slug: string) {\n  return `/${locale.toLowerCase()}/${slug.replace(/^\\//, '')}`;\n}\n\nexport const makeAbsolute = (locale: string, slug: string) => {\n  return `${getBaseUrl()}${makePath(locale, slug)}`;\n};\n\nexport const getBaseUrl = () => {\n  return (\n    process.env.GATSBY_SITE_URL ?? 'https://signature-products.com'\n  ).replace(/\\/$/, '');\n};\n","import { useStaticQuery, graphql } from 'gatsby';\nimport { useLocation } from '@reach/router';\nimport { useMemo } from 'react';\nimport makePath from '../helpers/makePath';\nimport { StrapiApiImage } from '../components/images/StrapiImage';\n\nexport type StrapiCategory = {\n  title: string;\n  excerpt: string;\n  locale: string;\n  slug: string;\n  strapi_id: number;\n  strapi_parent: {\n    id: number;\n  };\n  strapi_children: {\n    id: number;\n  }[];\n  pages: {\n    strapi_id: number;\n  }[];\n  children?: StrapiCategory[];\n  strapiPages?: StrapiPage[];\n  active?: boolean;\n  priority?: number;\n  icon?: StrapiApiImage;\n};\n\nexport type StrapiPage = {\n  title: string;\n  excerpt: string;\n  locale: string;\n  slug: string;\n  strapi_id: number;\n  active?: boolean;\n  priority?: number;\n  icon?: StrapiApiImage;\n};\n\nfunction isActive(\n  pageOrCategory: StrapiCategory | StrapiPage,\n  location: string\n) {\n  const path = makePath(pageOrCategory.locale, pageOrCategory.slug);\n  return location.replace(/\\/$/, '') === path;\n}\n\nfunction decorateCategory(\n  category: StrapiCategory,\n  allCategories: StrapiCategory[],\n  allPages: StrapiPage[],\n  location: string\n) {\n  if (!category) return null;\n  category.children = category.strapi_children.map(({ id }) => {\n    const childCategory = decorateCategory(\n      allCategories.find((cat) => cat.strapi_id === id),\n      allCategories,\n      allPages,\n      location\n    );\n    return childCategory;\n  });\n  let hasActivePage = false;\n  category.strapiPages = category.pages.map(({ strapi_id }) => {\n    const page = allPages.find((page) => page.strapi_id == strapi_id);\n    page.active = isActive(page, location);\n    hasActivePage = hasActivePage || page.active;\n    return page;\n  });\n  category.active = isActive(category, location) || hasActivePage;\n  return category;\n}\n\nfunction propagateActiveState(category: StrapiCategory) {\n  if (!category?.children) return category;\n\n  category.children.map((child) => {\n    child = propagateActiveState(child);\n    if (child?.active) {\n      category.active = true;\n    }\n  });\n\n  return category;\n}\n\nexport default function useCategoryTree(locale: string, rootId: number = null) {\n  const { allStrapiCategory, allStrapiPage } = useStaticQuery(graphql`\n    query {\n      allStrapiCategory {\n        nodes {\n          title\n          excerpt\n          locale\n          slug\n          strapi_id\n          priority\n          icon {\n            ...StrapiImageConstrained\n          }\n          strapi_parent {\n            id\n          }\n          strapi_children {\n            id\n          }\n          pages {\n            strapi_id\n          }\n        }\n      }\n      allStrapiPage {\n        nodes {\n          strapi_id\n          slug\n          title\n          excerpt\n          locale\n          priority\n          icon {\n            ...StrapiImageConstrained\n          }\n        }\n      }\n    }\n  `);\n\n  const location = useLocation();\n\n  return useMemo(() => {\n    const categories: StrapiCategory[] = allStrapiCategory.nodes.filter(\n      (cat: StrapiCategory) => cat.locale.toLowerCase() === locale.toLowerCase()\n    );\n    const decoratedCategories = categories\n      .filter((cat) => cat.strapi_id == rootId)\n      .map((cat) =>\n        decorateCategory(\n          cat,\n          categories,\n          allStrapiPage.nodes,\n          location.pathname\n        )\n      );\n    return decoratedCategories.map((cat) => propagateActiveState(cat));\n  }, [allStrapiCategory, allStrapiPage, locale, rootId, location]);\n}\n","import React from \"react\";\nimport { useContext, createContext, ReactNode } from \"react\";\n\nconst LocaleContext = createContext<string>(undefined);\n\nexport const useLocale = () => {\n    return useContext(LocaleContext);\n};\n\nexport const LocaleProvider = ({\n    children,\n    locale,\n  }: {\n    children: ReactNode;\n    locale?: string;\n  }) => {\n    return (\n      <LocaleContext.Provider value={locale?.toLowerCase()}>\n        {children}\n      </LocaleContext.Provider>\n    );\n  };\n  ","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Darkness } from \"./useDarkness\";\n\nexport default function usePreferredColorSchema(): Darkness {\n    const [colorSchema, setColorSchema] = useState<Darkness>('light');\n\n    const handlePreferredColorScheme = useCallback((e: MediaQueryListEvent) => {\n        if(e.matches) {\n            setColorSchema('dark');\n        } else {\n            setColorSchema('light');\n        }\n    }, []);\n\n    useEffect(() => {\n        window.matchMedia(\"(prefers-color-scheme: dark)\").addEventListener(\"change\", handlePreferredColorScheme);\n\n        handlePreferredColorScheme({\n            matches: window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n        } as any);\n\n        return () => {\n            window.matchMedia(\"(prefers-color-scheme: dark)\").removeEventListener(\"change\", handlePreferredColorScheme);\n        }\n    }, []);\n\n    return colorSchema;\n}","import invariant from \"invariant\"; ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\nvar startsWith = function startsWith(string, search) {\n  return string.substr(0, search.length) === search;\n}; ////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n//     static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n//     { path, default, value }\n//\n// And a returned match looks like:\n//\n//     { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\n\n\nvar pick = function pick(routes, uri) {\n  var match = void 0;\n  var default_ = void 0;\n\n  var _uri$split = uri.split(\"?\"),\n      uriPathname = _uri$split[0];\n\n  var uriSegments = segmentize(uriPathname);\n  var isRootUri = uriSegments[0] === \"\";\n  var ranked = rankRoutes(routes);\n\n  for (var i = 0, l = ranked.length; i < l; i++) {\n    var missed = false;\n    var route = ranked[i].route;\n\n    if (route.default) {\n      default_ = {\n        route: route,\n        params: {},\n        uri: uri\n      };\n      continue;\n    }\n\n    var routeSegments = segmentize(route.path);\n    var params = {};\n    var max = Math.max(uriSegments.length, routeSegments.length);\n    var index = 0;\n\n    for (; index < max; index++) {\n      var routeSegment = routeSegments[index];\n      var uriSegment = uriSegments[index];\n\n      if (isSplat(routeSegment)) {\n        // Hit a splat, just grab the rest, and return a match\n        // uri:   /files/documents/work\n        // route: /files/*\n        var param = routeSegment.slice(1) || \"*\";\n        params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n        break;\n      }\n\n      if (uriSegment === undefined) {\n        // URI is shorter than the route, no match\n        // uri:   /users\n        // route: /users/:userId\n        missed = true;\n        break;\n      }\n\n      var dynamicMatch = paramRe.exec(routeSegment);\n\n      if (dynamicMatch && !isRootUri) {\n        var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n        !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router> dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n        var value = decodeURIComponent(uriSegment);\n        params[dynamicMatch[1]] = value;\n      } else if (routeSegment !== uriSegment) {\n        // Current segments don't match, not dynamic, not splat, so no match\n        // uri:   /users/123/settings\n        // route: /users/:id/profile\n        missed = true;\n        break;\n      }\n    }\n\n    if (!missed) {\n      match = {\n        route: route,\n        params: params,\n        uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n      };\n      break;\n    }\n  }\n\n  return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n  return pick([{\n    path: path\n  }], uri);\n}; ////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files.  Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n//     browserSpecResolve('foo', '/bar/') => /bar/foo\n//     browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories.  This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n//     <Link to=\"deeper\"/>\n//     // instead of\n//     <Link to=`{${props.uri}/deeper}`/>\n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n//     cd deeper\n//     # not\n//     cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\n\n\nvar resolve = function resolve(to, base) {\n  // /foo/bar, /baz/qux => /foo/bar\n  if (startsWith(to, \"/\")) {\n    return to;\n  }\n\n  var _to$split = to.split(\"?\"),\n      toPathname = _to$split[0],\n      toQuery = _to$split[1];\n\n  var _base$split = base.split(\"?\"),\n      basePathname = _base$split[0];\n\n  var toSegments = segmentize(toPathname);\n  var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n  if (toSegments[0] === \"\") {\n    return addQuery(basePathname, toQuery);\n  } // profile, /users/789 => /users/789/profile\n\n\n  if (!startsWith(toSegments[0], \".\")) {\n    var pathname = baseSegments.concat(toSegments).join(\"/\");\n    return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n  } // ./         /users/123  =>  /users/123\n  // ../        /users/123  =>  /users\n  // ../..      /users/123  =>  /\n  // ../../one  /a/b/c/d    =>  /a/b/one\n  // .././one   /a/b/c/d    =>  /a/b/c/one\n\n\n  var allSegments = baseSegments.concat(toSegments);\n  var segments = [];\n\n  for (var i = 0, l = allSegments.length; i < l; i++) {\n    var segment = allSegments[i];\n    if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n  }\n\n  return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\n\nvar insertParams = function insertParams(path, params) {\n  var _path$split = path.split(\"?\"),\n      pathBase = _path$split[0],\n      _path$split$ = _path$split[1],\n      query = _path$split$ === undefined ? \"\" : _path$split$;\n\n  var segments = segmentize(pathBase);\n  var constructedPath = \"/\" + segments.map(function (segment) {\n    var match = paramRe.exec(segment);\n    return match ? params[match[1]] : segment;\n  }).join(\"/\");\n  var _params$location = params.location;\n  _params$location = _params$location === undefined ? {} : _params$location;\n  var _params$location$sear = _params$location.search,\n      search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n  var searchSplit = search.split(\"?\")[1] || \"\";\n  constructedPath = addQuery(constructedPath, query, searchSplit);\n  return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n  var filter = function filter(segment) {\n    return isDynamic(segment);\n  };\n\n  var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n  var toString = segmentize(to).filter(filter).sort().join(\"/\");\n  return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n  return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n  return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n  return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n  var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n    score += SEGMENT_POINTS;\n    if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n    return score;\n  }, 0);\n  return {\n    route: route,\n    score: score,\n    index: index\n  };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n  return routes.map(rankRoute).sort(function (a, b) {\n    return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n  });\n};\n\nvar segmentize = function segmentize(uri) {\n  return uri // strip starting/ending slashes\n  .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n  for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    query[_key - 1] = arguments[_key];\n  }\n\n  query = query.filter(function (q) {\n    return q && q.length > 0;\n  });\n  return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\n\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n  var obj1Keys = Object.keys(obj1);\n  return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n    return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n  });\n}; ////////////////////////////////////////////////////////////////////////////////\n\n\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar getLocation = function getLocation(source) {\n  var _source$location = source.location,\n      search = _source$location.search,\n      hash = _source$location.hash,\n      href = _source$location.href,\n      origin = _source$location.origin,\n      protocol = _source$location.protocol,\n      host = _source$location.host,\n      hostname = _source$location.hostname,\n      port = _source$location.port;\n  var pathname = source.location.pathname;\n\n  if (!pathname && href && canUseDOM) {\n    var url = new URL(href);\n    pathname = url.pathname;\n  }\n\n  return {\n    pathname: encodeURI(decodeURI(pathname)),\n    search: search,\n    hash: hash,\n    href: href,\n    origin: origin,\n    protocol: protocol,\n    host: host,\n    hostname: hostname,\n    port: port,\n    state: source.history.state,\n    key: source.history.state && source.history.state.key || \"initial\"\n  };\n};\n\nvar createHistory = function createHistory(source, options) {\n  var listeners = [];\n  var location = getLocation(source);\n  var transitioning = false;\n\n  var resolveTransition = function resolveTransition() {};\n\n  return {\n    get location() {\n      return location;\n    },\n\n    get transitioning() {\n      return transitioning;\n    },\n\n    _onTransitionComplete: function _onTransitionComplete() {\n      transitioning = false;\n      resolveTransition();\n    },\n    listen: function listen(listener) {\n      listeners.push(listener);\n\n      var popstateListener = function popstateListener() {\n        location = getLocation(source);\n        listener({\n          location: location,\n          action: \"POP\"\n        });\n      };\n\n      source.addEventListener(\"popstate\", popstateListener);\n      return function () {\n        source.removeEventListener(\"popstate\", popstateListener);\n        listeners = listeners.filter(function (fn) {\n          return fn !== listener;\n        });\n      };\n    },\n    navigate: function navigate(to) {\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          state = _ref.state,\n          _ref$replace = _ref.replace,\n          replace = _ref$replace === undefined ? false : _ref$replace;\n\n      if (typeof to === \"number\") {\n        source.history.go(to);\n      } else {\n        state = _extends({}, state, {\n          key: Date.now() + \"\"\n        }); // try...catch iOS Safari limits to 100 pushState calls\n\n        try {\n          if (transitioning || replace) {\n            source.history.replaceState(state, null, to);\n          } else {\n            source.history.pushState(state, null, to);\n          }\n        } catch (e) {\n          source.location[replace ? \"replace\" : \"assign\"](to);\n        }\n      }\n\n      location = getLocation(source);\n      transitioning = true;\n      var transition = new Promise(function (res) {\n        return resolveTransition = res;\n      });\n      listeners.forEach(function (listener) {\n        return listener({\n          location: location,\n          action: \"PUSH\"\n        });\n      });\n      return transition;\n    }\n  };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n  var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n  var searchIndex = initialPath.indexOf(\"?\");\n  var initialLocation = {\n    pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n    search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n  };\n  var index = 0;\n  var stack = [initialLocation];\n  var states = [null];\n  return {\n    get location() {\n      return stack[index];\n    },\n\n    addEventListener: function addEventListener(name, fn) {},\n    removeEventListener: function removeEventListener(name, fn) {},\n    history: {\n      get entries() {\n        return stack;\n      },\n\n      get index() {\n        return index;\n      },\n\n      get state() {\n        return states[index];\n      },\n\n      pushState: function pushState(state, _, uri) {\n        var _uri$split = uri.split(\"?\"),\n            pathname = _uri$split[0],\n            _uri$split$ = _uri$split[1],\n            search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n        index++;\n        stack.push({\n          pathname: pathname,\n          search: search.length ? \"?\" + search : search\n        });\n        states.push(state);\n      },\n      replaceState: function replaceState(state, _, uri) {\n        var _uri$split2 = uri.split(\"?\"),\n            pathname = _uri$split2[0],\n            _uri$split2$ = _uri$split2[1],\n            search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n        stack[index] = {\n          pathname: pathname,\n          search: search\n        };\n        states[index] = state;\n      },\n      go: function go(to) {\n        var newIndex = index + to;\n\n        if (newIndex < 0 || newIndex > states.length - 1) {\n          return;\n        }\n\n        index = newIndex;\n      }\n    }\n  };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n  return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/* eslint-disable jsx-a11y/anchor-has-content */\n\n\nimport React, { useContext, createContext } from \"react\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\"; ////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n  var Ctx = createContext(defaultValue);\n  Ctx.displayName = name;\n  return Ctx;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\n\n\nvar LocationContext = createNamedContext(\"Location\"); // sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\n\nvar Location = function Location(_ref) {\n  var children = _ref.children;\n  return React.createElement(LocationContext.Consumer, null, function (context) {\n    return context ? children(context) : React.createElement(LocationProvider, null, children);\n  });\n};\n\nvar LocationProvider = function (_React$Component) {\n  _inherits(LocationProvider, _React$Component);\n\n  function LocationProvider() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, LocationProvider);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n      context: _this.getContext(),\n      refs: {\n        unlisten: null\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  LocationProvider.prototype.getContext = function getContext() {\n    var _props$history = this.props.history,\n        navigate = _props$history.navigate,\n        location = _props$history.location;\n    return {\n      navigate: navigate,\n      location: location\n    };\n  };\n\n  LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n    if (isRedirect(error)) {\n      var _navigate = this.props.history.navigate;\n\n      _navigate(error.uri, {\n        replace: true\n      });\n    } else {\n      throw error;\n    }\n  };\n\n  LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    if (prevState.context.location !== this.state.context.location) {\n      this.props.history._onTransitionComplete();\n    }\n  };\n\n  LocationProvider.prototype.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    var refs = this.state.refs,\n        history = this.props.history;\n\n    history._onTransitionComplete();\n\n    refs.unlisten = history.listen(function () {\n      Promise.resolve().then(function () {\n        // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n        requestAnimationFrame(function () {\n          if (!_this2.unmounted) {\n            _this2.setState(function () {\n              return {\n                context: _this2.getContext()\n              };\n            });\n          }\n        });\n      });\n    });\n  };\n\n  LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n    var refs = this.state.refs;\n    this.unmounted = true;\n    refs.unlisten();\n  };\n\n  LocationProvider.prototype.render = function render() {\n    var context = this.state.context,\n        children = this.props.children;\n    return React.createElement(LocationContext.Provider, {\n      value: context\n    }, typeof children === \"function\" ? children(context) : children || null);\n  };\n\n  return LocationProvider;\n}(React.Component); ////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n  history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\nvar ServerLocation = function ServerLocation(_ref2) {\n  var url = _ref2.url,\n      children = _ref2.children;\n  var searchIndex = url.indexOf(\"?\");\n  var searchExists = searchIndex > -1;\n  var pathname = void 0;\n  var search = \"\";\n  var hash = \"\";\n\n  if (searchExists) {\n    pathname = url.substring(0, searchIndex);\n    search = url.substring(searchIndex);\n  } else {\n    pathname = url;\n  }\n\n  return React.createElement(LocationContext.Provider, {\n    value: {\n      location: {\n        pathname: pathname,\n        search: search,\n        hash: hash\n      },\n      navigate: function navigate() {\n        throw new Error(\"You can't call navigate on the server.\");\n      }\n    }\n  }, children);\n}; ////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\n\n\nvar BaseContext = createNamedContext(\"Base\", {\n  baseuri: \"/\",\n  basepath: \"/\",\n  navigate: globalHistory.navigate\n}); ////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\n\nvar Router = function Router(props) {\n  return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n    return React.createElement(Location, null, function (locationContext) {\n      return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n    });\n  });\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n  _inherits(RouterImpl, _React$PureComponent);\n\n  function RouterImpl() {\n    _classCallCheck(this, RouterImpl);\n\n    return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n  }\n\n  RouterImpl.prototype.render = function render() {\n    var _props = this.props,\n        location = _props.location,\n        _navigate2 = _props.navigate,\n        basepath = _props.basepath,\n        primary = _props.primary,\n        children = _props.children,\n        baseuri = _props.baseuri,\n        _props$component = _props.component,\n        component = _props$component === undefined ? \"div\" : _props$component,\n        domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n    var routes = React.Children.toArray(children).reduce(function (array, child) {\n      var routes = createRoute(basepath)(child);\n      return array.concat(routes);\n    }, []);\n    var pathname = location.pathname;\n    var match = pick(routes, pathname);\n\n    if (match) {\n      var params = match.params,\n          uri = match.uri,\n          route = match.route,\n          element = match.route.value; // remove the /* from the end for child routes relative paths\n\n      basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n      var props = _extends({}, params, {\n        uri: uri,\n        location: location,\n        navigate: function navigate(to, options) {\n          return _navigate2(resolve(to, uri), options);\n        }\n      });\n\n      var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n        location: location,\n        primary: primary\n      }, element.props.children) : undefined); // using 'div' for < 16.3 support\n\n      var FocusWrapper = primary ? FocusHandler : component; // don't pass any props to 'div'\n\n      var wrapperProps = primary ? _extends({\n        uri: uri,\n        location: location,\n        component: component\n      }, domProps) : domProps;\n      return React.createElement(BaseContext.Provider, {\n        value: {\n          baseuri: uri,\n          basepath: basepath,\n          navigate: props.navigate\n        }\n      }, React.createElement(FocusWrapper, wrapperProps, clone));\n    } else {\n      // Not sure if we want this, would require index routes at every level\n      // warning(\n      //   false,\n      //   `<Router basepath=\"${basepath}\">\\n\\nNothing matched:\\n\\t${\n      //     location.pathname\n      //   }\\n\\nPaths checked: \\n\\t${routes\n      //     .map(route => route.path)\n      //     .join(\n      //       \"\\n\\t\"\n      //     )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n      //   \\n\\tlet NotFound = () => <div>Not Found!</div>\n      //   \\n\\t<Router>\\n\\t  <NotFound default/>\\n\\t  {/* ... */}\\n\\t</Router>`\n      // );\n      return null;\n    }\n  };\n\n  return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n  primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n  var uri = _ref3.uri,\n      location = _ref3.location,\n      component = _ref3.component,\n      domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n  return React.createElement(FocusContext.Consumer, null, function (requestFocus) {\n    return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n      component: component,\n      requestFocus: requestFocus,\n      uri: uri,\n      location: location\n    }));\n  });\n}; // don't focus on initial render\n\n\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n  _inherits(FocusHandlerImpl, _React$Component2);\n\n  function FocusHandlerImpl() {\n    var _temp2, _this4, _ret2;\n\n    _classCallCheck(this, FocusHandlerImpl);\n\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n      if (!_this4.state.shouldFocus && node) {\n        node.focus();\n      }\n    }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n  }\n\n  FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n    var initial = prevState.uri == null;\n\n    if (initial) {\n      return _extends({\n        shouldFocus: true\n      }, nextProps);\n    } else {\n      var myURIChanged = nextProps.uri !== prevState.uri;\n      var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n      return _extends({\n        shouldFocus: myURIChanged || navigatedUpToMe\n      }, nextProps);\n    }\n  };\n\n  FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n    focusHandlerCount++;\n    this.focus();\n  };\n\n  FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n    focusHandlerCount--;\n\n    if (focusHandlerCount === 0) {\n      initialRender = true;\n    }\n  };\n\n  FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n      this.focus();\n    }\n  };\n\n  FocusHandlerImpl.prototype.focus = function focus() {\n    if (process.env.NODE_ENV === \"test\") {\n      // getting cannot read property focus of null in the tests\n      // and that bit of global `initialRender` state causes problems\n      // should probably figure it out!\n      return;\n    }\n\n    var requestFocus = this.props.requestFocus;\n\n    if (requestFocus) {\n      requestFocus(this.node);\n    } else {\n      if (initialRender) {\n        initialRender = false;\n      } else if (this.node) {\n        // React polyfills [autofocus] and it fires earlier than cDM,\n        // so we were stealing focus away, this line prevents that.\n        if (!this.node.contains(document.activeElement)) {\n          this.node.focus();\n        }\n      }\n    }\n  };\n\n  FocusHandlerImpl.prototype.render = function render() {\n    var _this5 = this;\n\n    var _props2 = this.props,\n        children = _props2.children,\n        style = _props2.style,\n        requestFocus = _props2.requestFocus,\n        _props2$component = _props2.component,\n        Comp = _props2$component === undefined ? \"div\" : _props2$component,\n        uri = _props2.uri,\n        location = _props2.location,\n        domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n    return React.createElement(Comp, _extends({\n      style: _extends({\n        outline: \"none\"\n      }, style),\n      tabIndex: \"-1\",\n      ref: function ref(n) {\n        return _this5.node = n;\n      }\n    }, domProps), React.createElement(FocusContext.Provider, {\n      value: this.requestFocus\n    }, this.props.children));\n  };\n\n  return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {}; ////////////////////////////////////////////////////////////////////////////////\n\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = function forwardRef(C) {\n    return C;\n  };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n  var innerRef = _ref4.innerRef,\n      props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n  return React.createElement(BaseContext.Consumer, null, function (_ref5) {\n    var basepath = _ref5.basepath,\n        baseuri = _ref5.baseuri;\n    return React.createElement(Location, null, function (_ref6) {\n      var location = _ref6.location,\n          navigate = _ref6.navigate;\n\n      var to = props.to,\n          state = props.state,\n          replace = props.replace,\n          _props$getProps = props.getProps,\n          getProps = _props$getProps === undefined ? k : _props$getProps,\n          anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n      var href = resolve(to, baseuri);\n      var encodedHref = encodeURI(href);\n      var isCurrent = location.pathname === encodedHref;\n      var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n      return React.createElement(\"a\", _extends({\n        ref: ref || innerRef,\n        \"aria-current\": isCurrent ? \"page\" : undefined\n      }, anchorProps, getProps({\n        isCurrent: isCurrent,\n        isPartiallyCurrent: isPartiallyCurrent,\n        href: href,\n        location: location\n      }), {\n        href: href,\n        onClick: function onClick(event) {\n          if (anchorProps.onClick) anchorProps.onClick(event);\n\n          if (shouldNavigate(event)) {\n            event.preventDefault();\n            var shouldReplace = replace;\n\n            if (typeof replace !== \"boolean\" && isCurrent) {\n              var _location$state = _extends({}, location.state),\n                  key = _location$state.key,\n                  restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n              shouldReplace = shallowCompare(_extends({}, state), restState);\n            }\n\n            navigate(href, {\n              state: state,\n              replace: shouldReplace\n            });\n          }\n        }\n      }));\n    });\n  });\n});\nLink.displayName = \"Link\";\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nfunction RedirectRequest(uri) {\n  this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n  return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n  throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n  _inherits(RedirectImpl, _React$Component3);\n\n  function RedirectImpl() {\n    _classCallCheck(this, RedirectImpl);\n\n    return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n  } // Support React < 16 with this hook\n\n\n  RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n    var _props3 = this.props,\n        navigate = _props3.navigate,\n        to = _props3.to,\n        from = _props3.from,\n        _props3$replace = _props3.replace,\n        replace = _props3$replace === undefined ? true : _props3$replace,\n        state = _props3.state,\n        noThrow = _props3.noThrow,\n        baseuri = _props3.baseuri,\n        props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n    Promise.resolve().then(function () {\n      var resolvedTo = resolve(to, baseuri);\n      navigate(insertParams(resolvedTo, props), {\n        replace: replace,\n        state: state\n      });\n    });\n  };\n\n  RedirectImpl.prototype.render = function render() {\n    var _props4 = this.props,\n        navigate = _props4.navigate,\n        to = _props4.to,\n        from = _props4.from,\n        replace = _props4.replace,\n        state = _props4.state,\n        noThrow = _props4.noThrow,\n        baseuri = _props4.baseuri,\n        props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n    var resolvedTo = resolve(to, baseuri);\n    if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n    return null;\n  };\n\n  return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n  return React.createElement(BaseContext.Consumer, null, function (_ref7) {\n    var baseuri = _ref7.baseuri;\n    return React.createElement(Location, null, function (locationContext) {\n      return React.createElement(RedirectImpl, _extends({}, locationContext, {\n        baseuri: baseuri\n      }, props));\n    });\n  });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nvar Match = function Match(_ref8) {\n  var path = _ref8.path,\n      children = _ref8.children;\n  return React.createElement(BaseContext.Consumer, null, function (_ref9) {\n    var baseuri = _ref9.baseuri;\n    return React.createElement(Location, null, function (_ref10) {\n      var navigate = _ref10.navigate,\n          location = _ref10.location;\n      var resolvedPath = resolve(path, baseuri);\n      var result = match(resolvedPath, location.pathname);\n      return children({\n        navigate: navigate,\n        location: location,\n        match: result ? _extends({}, result.params, {\n          uri: result.uri,\n          path: path\n        }) : null\n      });\n    });\n  });\n}; ////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\n\nvar useLocation = function useLocation() {\n  var context = useContext(LocationContext);\n\n  if (!context) {\n    throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n  }\n\n  return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n  var context = useContext(BaseContext);\n\n  if (!context) {\n    throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n  }\n\n  return context.navigate;\n};\n\nvar useParams = function useParams() {\n  var context = useContext(BaseContext);\n\n  if (!context) {\n    throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n  }\n\n  var location = useLocation();\n  var results = match(context.basepath, location.pathname);\n  return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n  if (!path) {\n    throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n  }\n\n  var context = useContext(BaseContext);\n\n  if (!context) {\n    throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n  }\n\n  var location = useLocation();\n  var resolvedPath = resolve(path, context.baseuri);\n  var result = match(resolvedPath, location.pathname);\n  return result ? _extends({}, result.params, {\n    uri: result.uri,\n    path: path\n  }) : null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar stripSlashes = function stripSlashes(str) {\n  return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n  return function (element) {\n    if (!element) {\n      return null;\n    }\n\n    if (element.type === React.Fragment && element.props.children) {\n      return React.Children.map(element.props.children, createRoute(basepath));\n    }\n\n    !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router>: Children of <Router> must have a `path` or `default` prop, or be a `<Redirect>`. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n    !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \"\\\" to=\\\"\" + element.props.to + \"\\\"/> requires both \\\"from\\\" and \\\"to\\\" props when inside a <Router>.\") : invariant(false) : void 0;\n    !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \" to=\\\"\" + element.props.to + \"\\\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n    if (element.props.default) {\n      return {\n        value: element,\n        default: true\n      };\n    }\n\n    var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n    var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n    return {\n      value: element,\n      default: element.props.default,\n      path: element.props.children ? stripSlashes(path) + \"/*\" : path\n    };\n  };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n  return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}; ////////////////////////////////////////////////////////////////////////\n\n\nexport {  Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch , BaseContext };","/**\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","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","var fetchApi\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch\n  }\n}\n\nif (typeof require !== 'undefined' && (typeof window === 'undefined' || typeof window.document === 'undefined')) {\n  var f = fetchApi || require('cross-fetch')\n  if (f.default) f = f.default\n  exports.default = f\n  module.exports = exports.default\n}\n","export default function _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++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","export default function _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}","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _objectDestructuringEmpty(obj) {\n  if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}","export default function _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}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _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}","export default function _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}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","arrayLikeToArray","self","ReferenceError","instance","Constructor","TypeError","setPrototypeOf","isNativeReflectConstruct","_construct","Parent","args","Class","Reflect","construct","a","push","apply","Function","bind","prototype","arguments","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","obj","value","_extends","assign","source","hasOwnProperty","call","this","subClass","superClass","create","constructor","sham","Proxy","Boolean","valueOf","e","iter","Symbol","iterator","from","_i","_s","_e","_arr","_n","_d","next","done","err","excluded","sourceKeys","keys","indexOf","_setPrototypeOf","o","p","__proto__","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","minLen","n","toString","slice","name","test","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread2","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","_ref$userAgent","navigator","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","documentElement","head","addEventListener","createElement","IS_IE","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","PREFIX_TO_STYLE","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","concat","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","RESERVED_CLASSES","map","initial","FontAwesomeConfig","querySelector","_ref","_ref2","attr","val","coerce","element","getAttribute","getAttrConfig","_config","familyPrefix","styleDefault","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","config","set","_onChangeCb","cb","get","d","meaninglessTransform","size","x","y","rotate","flipX","flipY","nextUniqueId","id","Math","random","toArray","array","classArray","node","classList","split","htmlEscape","str","replace","joinStyles","styles","reduce","acc","styleName","trim","transformIsMeaningful","transform","css","dfp","drc","fp","rc","s","dPatt","RegExp","customPropPatt","rPatt","_cssInserted","ensureCss","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","insertCss","InjectCSS","mixout","dom","hooks","beforeDOMElementCreation","beforeI2svg","w","shims","namespace","functions","loaded","domready","fn","setTimeout","toHtml","abstractNodes","tag","_abstractNodes$attrib","attributes","_abstractNodes$childr","children","attributeName","joinAttributes","join","iconFromMapping","mapping","prefix","iconName","icon","doScroll","readyState","listener","removeEventListener","subject","initialValue","thisContext","result","undefined","func","b","c","bindInternal4","toHex","unicode","decoded","string","output","counter","charCodeAt","extra","ucs2decode","normalizeIcons","icons","defineIcons","params","_params$skipHooks","skipHooks","normalized","addPack","LONG_STYLE","values","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","cls","parts","build","lookup","reducer","alias","aliases","hasRegular","autoFetchSvg","shimLookups","shim","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","defined","getCanonicalIcon","_params$skipLookups","skipLookups","givenPrefix","canonical","includes","rest","aliasIconName","Library","_classCallCheck","definitions","_this","_len","_key","additions","_pullDefinitions","longPrefix","definition","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","hookFns","hookFn","callHooks","_len2","_key2","callProvided","findIconDefinition","iconLookup","library","i2svg","Promise","reject","watch","autoReplaceSvgRoot","autoReplace","api","noAuto","parse","_icon","match","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","abstract","container","html","makeInlineSvgAbstract","_params$icons","main","mask","symbol","title","maskId","titleId","_params$watchable","watchable","found","width","height","isUploadedIcon","attrClass","classes","content","role","uploadedIconWidthStyle","asSymbol","offset","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","class","makeLayersCounterAbstract","styles$1","asFoundIcon","vectorData","fill","missingIconResolutionMixin","findIcon","resolve","console","error","maybeNotifyMissing","noop$1","preamble","end","perf","noop$2","isWatched","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","createTextNode","appendChild","mutators","mutation","parentNode","comment","createComment","outerHTML","nodeAsComment","replaceChild","remove","nest","forSvg","splitClasses","toSvg","toNode","removeAttribute","newInnerHTML","performOperationSync","op","perform","mutations","callback","callbackFunction","frame","requestAnimationFrame","mutator","disabled","disableObservation","enableObservation","mo","observe","options","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","mutationRecord","type","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","contains","childList","characterData","subtree","styleParser","prop","classParser","ligature","existingPrefix","existingIconName","innerText","attributesParser","extraAttributes","parseMeta","parser","_classParser","extraClasses","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","onTree","root","htmlClassList","hclAdd","suffix","add","hclRemove","prefixes","prefixesDomQuery","candidates","querySelectorAll","all","then","resolvedMutations","catch","onNode","render","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","_ref3","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","LayersText","text","generateLayersText","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","position","pendingAttribute","oldUnicode","newUnicode","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","fontWeight","removeChild","_content","toLowerCase","_hexValueFromContent","index","second","first","cleaned","codePoint","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","startsWith","iconIdentifier","iconName4","meta","firstChild","processable","operations","_unwatched","parseTransformString","transformString","parseFloat","isNaN","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","outer","innerTranslate","innerScale","innerRotate","inner","path","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","matchMedia","matches","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","r","opacity","nextPlugins","mixoutsTo","k","plugin","tk","sk","registerPlugins","pseudoElements2svg","unwatch","bootstrap","disconnect","symbolData","parse$1","_objectWithoutProperties","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","camelize","chr","substr","_excluded$1","styleToObject","pair","charAt","normalizeIconArgs","objectWithKey","_excluded","FontAwesomeIcon","forwardedRef","iconArgs","maskArgs","className","_classes","beat","fade","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","listItem","flip","rotation","pull","swapOpacity","renderedIcon","_console","log","extraProps","ref","defaultProps","convertCurry","displayName","propTypes","convert","mixins","attrs","_extraProps$style","existingStyle","remaining","getLocation","_source$location","location","search","hash","href","origin","protocol","host","hostname","port","pathname","canUseDOM","URL","encodeURI","decodeURI","state","history","createHistory","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","popstateListener","action","navigate","to","_ref$replace","go","Date","now","replaceState","pushState","transition","res","createMemorySource","initialPath","searchIndex","initialLocation","stack","states","entries","_","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","globalHistory","shallowCompare","validateRedirect","insertParams","pick","_invariant","_invariant2","default","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","l","missed","route","routeSegments","max","routeSegment","uriSegment","isSplat","decodeURIComponent","dynamicMatch","paramRe","exec","reservedNames","isDynamic","segment","rankRoute","score","isRootSegment","SEGMENT_POINTS","sort","addQuery","query","q","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","allSegments","segments","pop","_path$split","pathBase","_path$split$","constructedPath","_params$location","_params$location$sear","searchSplit","obj1","obj2","obj1Keys","every","invariant","condition","message","Error","framesToPop","warn","Context","getRequiredChunkKey","sharedInternals","freeze","LOADABLE_SHARED","initialChunks","STATUS_PENDING","STATUS_REJECTED","identity","v","createLoadable","_ref$defaultResolveCo","defaultResolveComponent","_render","onLoad","loadable","loadableConstructor","ctor","requireAsync","chunkName","resolveConstructor","cache","_getCacheKey","cacheKey","Loadable","Component","resolveComponent","isValidElementType","preload","LoadableWithChunkExtractor","cachedLoad","promise","status","fileName","InnerLoadable","_React$Component","loading","__chunkExtractor","requireSync","ssr","loadSync","addChunk","isReady","getDerivedStateFromProps","_proto","componentDidMount","mounted","cachedPromise","getCache","setCache","loadAsync","componentDidUpdate","prevProps","prevState","componentWillUnmount","safeSetState","nextState","setState","getCacheKey","triggerOnLoad","_this2","_this3","resolveAsync","loadedModule","_this$props","_this$props2","propFallback","fallback","_this$state","suspense","EnhancedInnerLoadable","Consumer","extractor","load","lazy","_createLoadable","_createLoadable$1","current","loadable$1","lazy$1","BROWSER","loadableReady","_temp","_ref$namespace","_ref$chunkLoadingGlob","chunkLoadingGlobal","requiredChunks","dataElement","getElementById","JSON","textContent","extElement","namedChunks","resolved","loadedChunks","originalPush","checkReadyState","chunk","some","loadable$2","lib","lazy$2","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","MDXContext","withMDXComponents","allComponents","useMDXComponents","components","contextComponents","MDXProvider","Provider","DEFAULTS","inlineCode","wrapper","MDXCreateElement","propComponents","mdxType","originalType","parentName","etc","argsLength","createElementArgArray","newProps","camelCase","input","pascalCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","preserveCamelCase","p1","m","strings","raw","_createClass","_templateObject","TemplateTag","transformers","expressions","interimTag","transformEndResult","processSubstitutions","transformer","previousTag","template","_len3","substitutions","_key3","resultSoFar","remainingPart","substitution","transformSubstitution","shift","onString","onSubstitution","endResult","onEndResult","defaults","separator","conjunction","serial","opts","arrayLength","indent","separatorIndex","lastIndexOf","min","el","regexp","side","splitBy","isValidValue","Number","replaceWhat","replaceWith","global","__self__","F","fetch","DOMException","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","String","normalizeValue","iteratorFor","items","Headers","headers","append","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","arrayBuffer","readAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","json","oldValue","has","thisArg","methods","Request","method","upcased","url","credentials","mode","signal","referrer","form","bytes","Response","bodyInit","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","onreadystatechange","send","polyfill","ponyfill","ctx","applyTrailingSlashOption","option","hasHtmlSuffix","endsWith","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","_objectSpread","consoleLogger","Logger","concreteLogger","logger","debug","bool","forward","_len4","_key4","lvl","debugOnly","moduleName","baseLogger","EventEmitter","observers","events","event","cloned","observer","_cloned","defer","rej","makeString","copy","t","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","data","defaultData","deepExtend","overwrite","regexEscape","_entityMap","isIE10","userAgentData","ownKeys$1","_objectSpread$1","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","NewTarget","deepFind","keySeparator","paths","j","mix","joinedPath","ResourceStore","_EventEmitter","_super","ns","defaultNS","ignoreJSONStructure","splice","lng","silent","addNamespaces","emit","resources","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","find","postProcessor","processors","addPostProcessor","handle","translator","processor","process","ownKeys$2","_objectSpread$2","_createSuper$1","_isNativeReflectConstruct$1","checkedLoadedFor","Translator","services","language","interpolation","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","substring","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValue","isValidLookup","missingKeyNoValueFallbackToKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","interpolate","na","context","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","codes","utils","hasLoadedNamespace","code","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","capitalize","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","other","createRules","rules","numbers","plurals","PluralResolver","compatibilityJSON","Intl","PluralRules","_unused","rule","getRule","resolvedOptions","pluralCategories","pluralCategory1","pluralCategory2","pluralCategory","prepend","number","select","getSuffixRetroCompatible","idx","noAbs","abs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","Interpolator","format","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","f","missingInterpolationHandler","regex","safeValue","todo","matchedVar","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","formatters","doReduce","elem","ownKeys$4","_objectSpread$4","parseFormatStr","formatStr","formatName","formatOptions","optStr","currency","range","opt","_opt$split","_opt$split2","Formatter","formats","NumberFormat","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","list","ListFormat","_format","mem","_parseFormatStr","formatted","valOptions","formatParams","locale","ownKeys$5","_objectSpread$5","_createSuper$2","_isNativeReflectConstruct$2","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","queue","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","errors","addResourceBundle","_getLastOfPath2","removePending","loadedKeys","fcName","tried","wait","read","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","initImmediate","pluralSeparator","partialBundledLanguages","ret","tDescription","transformOptions","ownKeys$6","_objectSpread$6","_createSuper$3","_isNativeReflectConstruct$3","bindMemberFunctions","inst","I18n","modules","external","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","formatter","lu","on","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","initializedStoreOnce","changeLanguage","usedCallback","resolvedLanguage","setResolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","isLanguageChangingTo","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","async","detect","keyPrefix","fixedT","resultKey","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","createInstance","reloadResources","use","getFixedT","setDefaultNamespace","loadNamespaces","loadLanguages","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","equal","it","flags","$$typeof","clock","_class","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","classCallCheck","createClass","objectWithoutProperties","possibleConstructorReturn","encodeSpecialCharacters","encode","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","property","rafPolyfill","currentTime","cafPolyfill","clearTimeout","webkitRequestAnimationFrame","mozRequestAnimationFrame","g","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","getElementsByTagName","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","tags","headElement","tagNodes","indexToDelete","newElement","styleSheet","cssText","existingTag","isEqualNode","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref$title","link","noscript","script","HelmetSideEffects","HelmetExport","HelmetWrapper","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","_props","defaultTitle","titleTemplate","peek","rewind","mappedState","renderStatic","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","getI18n","initReactI18next","setDefaults","react","setI18n","alreadyWarned","warnOnce","i18n","initialized","off","oldI18nextHasLoadedNamespace","isNewerI18next","useTranslation","i18nFromProps","useContext","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","ready","i18nOptions","addUsedNamespaces","getT","nsMode","_useState","useState","_useState2","setT","isMounted","useRef","useEffect","boundReset","isInitial","for","h","z","u","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","ex","React","React__default","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","UNSAFE_componentWillMount","PureComponent","getDisplayName","isCallable","tryToString","argument","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","isObject","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","fromIndex","O","isConstructor","SPECIES","originalArray","C","arraySpeciesConstructor","uncurryThis","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","hasOwn","getOwnPropertyDescriptorModule","exceptions","DESCRIPTORS","createPropertyDescriptor","bitmap","fails","EXISTS","getBuiltIn","version","Deno","versions","v8","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","flattenIntoArray","original","sourceLen","start","depth","mapper","elementLen","targetIndex","sourceIndex","mapFn","aCallable","NATIVE_BIND","that","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","aFunction","V","P","check","globalThis","toObject","classof","functionToString","inspectSource","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","TYPE","empty","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","replacement","feature","normalize","POLYFILL","NATIVE","USE_SYMBOL_AS_UID","$Symbol","toLength","V8_VERSION","activeXDocument","anObject","definePropertiesModule","enumBugKeys","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","write","close","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","display","src","contentWindow","Properties","V8_PROTOTYPE_DEFINE_BUG","objectKeys","IE8_DOM_DEFINE","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","propertyIsEnumerableModule","internalObjectKeys","$propertyIsEnumerable","NASHORN_BUG","pref","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","InternalStateModule","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","uid","SHARED","IS_PURE","copyright","license","toIntegerOrInfinity","integer","IndexedObject","requireObjectCoercible","ceil","floor","isSymbol","getMethod","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","NATIVE_SYMBOL","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","$","arraySpeciesCreate","proto","flatMap","callbackfn","flat","depthArg","addToUnscopables","_interopRequireDefault","withPrefix","withAssetPrefix","getGlobalPathPrefix","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_propTypes","_react","_reachRouter","_parsePath","parsePath","_isLocalLink","_rewriteLinkPath","getGlobalBasePrefix","isLocalLink","NavLinkPropTypes","activeClassName","activeStyle","partiallyActive","GatsbyLinkLocationWrapper","Location","GatsbyLink","_location","defaultGetProps","isPartiallyCurrent","isCurrent","IOSupported","IntersectionObserver","abortPrefetch","handleRef","_prefetch","currentPath","rewrittenPath","rewriteLinkPath","parsed","newPathName","___loader","enqueue","io","_this$io","unobserve","innerRef","inViewPort","entry","isIntersecting","intersectionRatio","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","prefixedTo","Link","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","shouldReplace","___navigate","isRequired","_default","forwardRef","ABSOLUTE_URL_REGEX","isAbsolute","hashIndex","_utils","_parsePath2","isAbsolutePath","relativeTo","adjustedPath","absolutify","_scrollHandler","ScrollHandler","_useScrollRestoration","useScrollRestoration","ScrollContext","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","_sessionStorage","cacheBabelInterop","cacheNodeInterop","createContext","SessionStorage","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","scrollY","_saveScroll","windowScroll","shouldUpdateScroll","scrollTo","scrollToHash","scrollIntoView","prevRouterProps","routerProps","save","scrollPosition","_this$props$location","_this$props$location2","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","sessionStorage","getItem","storedValue","stringify","setItem","stateKeyBase","identifier","useLocation","useLayoutEffect","onScroll","scrollTop","require","plugins","getResourceURLsForPathname","loadPage","loadPageSync","defaultReturn","argTransform","results","previous","handler","evt","mitt","pathAndSearch","pathCache","matchPaths","trimPathname","rawPathname","stripPrefix","__BASE_PATH__","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","normalizePagePath","grabMatchParams","findPath","maybeGetBrowserRedirect","toPath","foundPath","prefetchPathname","loader","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","useStaticQuery","graphql","supportedPrefetchStrategy","fakeLink","relList","supports","getElementsByName","req","preFetched","PageResourceStatus","Success","preferDefault","createPageDataUrl","rawPath","maybeSearch","stripSurroundingSlashes","doFetch","toPageResources","pageData","page","componentChunkName","webpackCompilationHash","staticQueryHashes","getServerDataError","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","isPrefetchQueueRunning","prefetchQueued","prefetchTriggered","prefetchCompleted","memoizedGet","inFlightPromise","delete","setApiRunner","apiRunner","prefetchDisabled","fetchPageDataJson","loadObj","pagePath","retries","jsonPayload","payload","notFound","internalServerError","loadPageDataJson","loadAppData","allData","finalResult","componentChunkPromise","pageResources","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResults","staticQueryResultsMap","emitter","withErrorDetails","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","prefetch","abortC","AbortController","findIndex","_processNextPrefetchBatch","requestIdleCallback","toPrefetch","prefetches","dPromise","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","createComponentUrls","isPageNotFound","appData","___chunkMapping","__PATH_PREFIX__","ProdLoader","asyncRequires","componentUrls","setLoader","_loader","publicLoader","getStaticQueryResults","PageRenderer","pageContext","__params","pageElement","RouteAnnouncerProps","top","padding","overflow","clip","whiteSpace","maybeRedirect","___replace","nextRoute","reason","onPreRouteUpdate","prevLocation","onRouteUpdate","___swUpdated","timeoutId","___webpackCompilationHash","serviceWorker","controller","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","RouteAnnouncer","announcementRef","pageName","pageHeadings","newAnnouncement","compareLocationProps","nextLocation","RouteUpdates","shallowDiffers","EnsureResources","___emitter","___push","reloadStorageKey","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","LocationHandler","Router","browserLoc","getSessionStorage","removeItem","SiteRoot","App","onClientEntryRanRef","renderer","ReactDOM","runRender","rootElement","doc","InternalPageRenderer","redirectMap","redirectIgnoreCaseMap","redirects","ignoreCase","fromPath","register","reg","installingWorker","installing","___failedResources","hasXMLHttpRequest","fetchApi","XmlHttpRequestApi","ActiveXObjectApi","addQueryString","queryString","paramName","encodeURIComponent","queryStringParams","customHeaders","requestOptions","requestWithFetch","crossDomain","overrideMimeType","requestWithXmlHttpRequest","loadPath","addPath","allowMultiLoading","parsePayload","reloadInterval","Backend","allOptions","setInterval","_readAny","loadUrlLanguages","loadUrlNamespaces","maybePromise","isPromise","resolvedLoadPath","loadUrl","parseErr","finished","dataArray","resArray","_this$services","currentLanguage","useOutsideClick","ignore","handlerCallback","useCallback","ignoreRef","stopPropagation","callbackRef","Logo","colour","StrapiImage","fitWidth","image","strapiLogo","upperFirst","getWindow","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","round","includeScale","rect","scaleX","scaleY","offsetHeight","offsetWidth","right","bottom","left","getWindowScroll","win","scrollLeft","pageXOffset","pageYOffset","getNodeName","nodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","offsets","clientLeft","clientTop","getLayoutRect","clientRect","offsetLeft","offsetTop","getParentNode","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","auto","basePlacements","viewport","popper","variationPlacements","placement","modifierPhases","order","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","reference","orderedModifiers","modifiersData","elements","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","merged","existing","mergeByName","enabled","_ref3$options","effect","cleanupFn","noopFn","update","forceUpdate","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","_options","destroy","onFirstUpdate","passive","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets","getOppositePlacement","getOppositeVariationPlacement","parent","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","clientWidth","clientHeight","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","referenceRect","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowElement","arrow","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","_options$scroll","_options$resize","resize","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","initialStyles","margin","_skip","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","_loop","fittingPlacement","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","fromEntries","useIsomorphicLayoutEffect","EMPTY_MODIFIERS","Popover","keepDom","interval","timeout","referenceElement","setReferenceElement","popperElement","setPopperElement","isOpen","setOpen","sensitivity","onStartHover","onEndHover","isHovering","setIsHovering","timer","mouseLocation","pX","pY","updateHovering","resetTimer","handleDelayedMouseOut","handleTick","handleMouseMove","clientX","clientY","handleMouseOver","handleMouseOut","useHover","prevOptions","optionsWithDefaults","_React$useState","updateStateModifier","popperOptions","newOptions","popperInstanceRef","popperInstance","createPopper","usePopper","useMemo","minWidth","onTouchStart","zIndex","PopoverBody","LanguageSwitcherItem","slug","CircleFlag","countryCode","LanguageSwitcher","activeLocale","locales","localePopover","localeCompare","useMainMenu","allStrapiMainMenu","menu","nodes","active","handleLinkClick","MainMenuCategoryItem","categoryId","onActivate","useLocale","rootCategory","useCategoryTree","cat","strapi_id","pages","makePath","onFocus","useSSR","isBrowser","setIsBrowser","Overlay","keepHeader","visible","withPadding","withBorder","withMargin","relativeToDocument","useMeasure","setRef","measurements","setMeasurements","boundingRect","computedStyles","scrollX","marginLeft","marginTop","paddingLeft","paddingTop","borderLeft","borderLeftWidth","borderTop","borderTopWidth","paddingX","paddingRight","paddingY","paddingBottom","marginX","marginRight","marginY","marginBottom","borderX","borderRightWidth","borderY","borderBottomWidth","updateRef","ResizeObserver","_superPropBase","_get","receiver","_wrapNativeSuper","_cache","Wrapper","asyncGeneratorStep","gen","_next","_throw","arg","info","_asyncToGenerator","updateQueue","makeQueue","raf","schedule","writeQueue","onStartQueue","onStart","onFrameQueue","onFrame","onFinishQueue","onFinish","timeouts","ms","time","cancel","findTimeout","sync","batchedUpdates","throttle","lastArgs","queuedFn","throttled","nativeRaf","impl","frameLoop","advance","ts","loop","prevTs","eachSafely","flush","each","fun","num","und","isEqual","eachProp","clear","createStringInterpolator$1","flushCalls","isSSR","colors$1","skipAnimation","willAdvance","globals","createStringInterpolator","colors","startQueue","currentFrame","prevFrame","priority","idle","animation","flushStartQueue","startSafely","prevIndex","startUnsafely","dt","nextFrame","NUMBER","PERCENTAGE","rgb","rgba","hsl","hsla","hex3","hex4","hex6","hex8","hue2rgb","hslToRgb","parse255","int","parse360","parse1","parsePercentage","colorToRgba","color","int32Color","createInterpolator","extrapolate","outputRange","inputRange","extrapolateLeft","extrapolateRight","easing","findRange","inputMin","inputMax","outputMin","outputMax","Infinity","$get","$observers","hasFluidValue","getFluidValue","getFluidObservers","callFluidObservers","eventObserved","callFluidObserver","FluidValue","setFluidGetter","setHidden","addFluidObserver","observerAdded","removeFluidObserver","observerRemoved","namedColorRegex","numberRegex","colorRegex","unitRegex","rgbaRegex","cssVariableRegex","variableToRgba","_parseCSSVariable2","parseCSSVariable","token","_value","_match","rgbaRound","p2","p3","p4","keyframes","interpolators","_output$find","missingUnit","once","warnInterpolate","warnDirectCall","isAnimatedString","useIsMounted","emptyDeps","prevRef","$node","getAnimated","owner","setAnimated","getPayload","Animated","AnimatedValue","_Animated","elapsedTime","lastPosition","lastVelocity","v0","durationProgress","step","AnimatedString","_AnimatedValue","_super2","_string","_toString","goal","getValue","TreeContext","dependencies","AnimatedObject","_Animated2","_super3","setValue","animated","_makePayload","_addToPayload","AnimatedArray","_AnimatedObject","_super4","makeAnimated","getAnimatedType","withAnimated","hasInstance","isReactComponent","givenProps","givenRef","instanceRef","_getAnimatedState","createAnimatedStyle","getAnimatedState","_getAnimatedState2","deps","applyAnimatedValues","PropsObserver","observerRef","usedProps","getComponentProps","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","return","callProp","matchProp","resolveProp","getDefaultProp","noopTransform","DEFAULT_PROPS","_step","_iterator","RESERVED_PROPS","pause","immediate","delay","onProps","onChange","onPause","onResume","onRest","onResolve","trail","expires","enter","leave","onDestroyed","callId","parentId","inferTo","getForwardProps","out","computeGoal","hasProps","isAsyncTo","detachRefs","ctrl","_ctrl$ref","replaceRef","_ctrl$ref2","c1","c2","c3","c4","PI","c5","bounceOut","n1","d1","tension","friction","mass","damping","linear","easeInQuad","easeOutQuad","easeInOutQuad","pow","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","sin","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInElastic","easeOutElastic","easeInOutElastic","easeInBounce","easeOutBounce","easeInOutBounce","clamp","AnimationConfig","frequency","velocity","restVelocity","precision","progress","duration","bounce","decay","sanitizeConfig","isTensionConfig","emptyArray","Animation","changed","toValues","fromValues","scheduleProps","actions","_props$cancel","paused","resumeQueue","resume","delayed","pauseQueue","cancelId","getCombinedResult","cancelled","getCancelledResult","getNoopResult","getFinishedResult","runAsync","prevTo","asyncTo","prevPromise","_callee3","preventBail","bail","bailPromise","bailIfEnded","animate","animating","_context3","prev","asyncId","bailSignal","bailResult","arg1","arg2","BailSignal","skipAnimationSignal","SkipAniamtionSignal","_callee","_context","stopAsync","sent","abrupt","stop","_callee2","_iterator2","_step2","_context2","t0","_x","item","_Error","_Error2","isFrameValue","FrameValue","nextId$1","_FluidValue","_priority","_onPriorityChange","_attach","_detach","$P","hasAnimated","isAnimating","isPaused","setActiveBit","IS_ANIMATING","setPausedBit","SpringValue","_FrameValue","_state","_pendingCalls","_lastCallId","_lastToId","_memoizedDuration","anim","elapsed","exp","bounceFactor","canBounce","isGrowing","numSteps","currVal","finalVal","_onChange","_stop","_focus","_set","_update","_this$animation","_to","_onStart","_this9","_start","_ref6","isLoop","_this10","mergeActiveFn","sendEvent","_prepareNode","isFrozen","checkFinished","_resume","_merge","createLoopUpdate","_this11","hasToProp","hasFromProp","prevFrom","_range$to","_range$from","_ref7","hasFromChanged","hasToChanged","hasAsyncTo","newConfig","defaultConfig","mergeConfig","isAnimatable","nodeType","goalType","started","hasValueChanged","ACTIVE_EVENTS","_this12","oldNode","loopRet","overrides","createUpdate","_props2","findDefined","declareUpdate","_target$animation$typ2","_target$defaultProps$2","_target$animation$typ","_target$animation","_target$defaultProps$","_target$defaultProps","_len5","_key5","BATCHED_EVENTS","nextId","Controller","springs","_flush","_initialProps","_lastAsyncId","_active","_changed","_started","_item","_events","_onFrame","spring","isDelayed","prepareKeys","flushUpdateQueue","_this13","_this$_events","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","flushUpdate","_x2","_x3","_x4","_flushUpdate","_callee4","promises","_context4","_ref20","t1","t2","getSprings","prepareSprings","createSpring","setSprings","_excluded$3","SpringContext","getResult","inputs","committed","prevCache","inherited","areInputsEqual","SpringRef","_update2","_getProps","_arguments","_arguments2","_this14","_update3","_arguments3","_this15","useSprings","_arguments4","propsFn","layoutId","ctrls","updates","prevLength","declareUpdates","startIndex","endIndex","_update4","prevContext","hasContext","useSpring","isFn","_useSprings","_useSprings2","_useSprings2$","TransitionPhase","useTrail","propsArg","_passedRef","passedRef","Interpolation","_FrameValue2","_super5","_this16","calc","_dt","checkIdle","becomeIdle","_this17","_this18","_this19","highest","isIdle","isCustomPropRE","dangerousStyleValue","isUnitlessNumber","attributeCache","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixKey","domTransforms","pxTransforms","degTransforms","addUnit","unit","isValueIdentity","AnimatedStyle","transforms","xyz","deg","FluidTransform","_this2$transforms$i2","unstable_batchedUpdates","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","_ref$applyAnimatedVal","_applyAnimatedValues","_ref$createAnimatedSt","_createAnimatedStyle","_ref$getComponentProp","_getComponentProps","hostConfig","createHost","isFilterElement","hasAttribute","setProperty","animationRef","measureRef","windowHeight","setWindowHeight","scrollbarWidth","setScrollbarWidth","layout","innerHeight","div","subtitle","submenuVisible","rootItems","strapiPages","totalItems","subitems","hasChildren","containerSyles","excerpt","MainMenu","mainMenu","activeSubmenu","setActiveSubmenu","strapi_component","category","useDelayed","delayedValue","setDelayedValue","refs","delayedOpen","MobileMenuItem","isHeader","isBack","hoverStyles","commonArrowStyles","faChevronLeft","faChevronRight","MobileMenuRootItem","onSelectSubCategory","MobileMenu","selectedSub","setSelectedSub","showSub","setShowSub","timerRef","setSub","sub","subItems","MobileMenuTrigger","faTimes","faBars","SiteMeta","socialTitle","socialDescription","socialImage","availableLocales","Helmet","lang","rel","makeAbsolute","hrefLang","getBaseUrl","localFile","publicURL","Header","mobileMenuOpen","setMobileMenuOpen","headerRef","mobileMenuRef","siteMeta","strapiPage","localizations","strapiCategory","allStrapiJobOffer","offer","slugify","Paragraph","mapIcon","faFacebook","faTwitter","faInstagram","faLinkedin","faYoutube","faGithub","faGoogle","faMedium","faTiktok","faXing","faQuestion","SocialMediaLink","Footer","footer","allStrapiFooter","fallbackFooter","useFooter","colorSchema","usePreferredColorSchema","Translated","contactCta","contactPhone","faPhone","contactEmail","faEnvelope","slogan","socialLinks","MDXRenderer","childMdx","links","partnerLogos","partner","logo","objectFit","useLocalStorage","internalVal","setInternalVal","handleStorageChange","localStorage","setVal","isGDPRShown","setGDPRShown","isMinimized","setMinimized","showBack","setShowBack","isGAactive","setGA","denyAll","updateConsent","acceptAll","cardRef","faFingerprint","front","Button","faCog","back","maxHeight","maxWidth","Card","Layout","mdxComponents","ul","UnorderedList","ListItem","I18nextProvider","gtag","sendPageView","page_path","wrapPageElement","scrollDiv","imageCache","hasNativeLazyLoadSupport","HTMLImageElement","GATSBY___IMAGE","storeImageloaded","hasImageLoaded","getImage","images","_node$images","_node$images$fallback","gatsbyImageData","childImageSharp","_node$childImageSharp","getMainProps","isLoading","isLoaded","toggleLoaded","dataset","objectPosition","objectFitPolyfill","import","shouldLoad","currentTarget","img","Image","currentSrc","getPlaceholderProps","placeholder","backgroundColor","wrapperStyle","Sizer","alt","LayoutWrapper","B","J","srcSet","decoding","Picture","sources","sizes","fallbackImage","media","PropTypes","Placeholder","_Picture$propTypes","propName","componentName","MainImage","altValidator","GatsbyImageHydrator","createRef","hydrated","forceRender","NODE_ENV","lazyHydrator","unobserveRef","_lazyHydrate","hasSSRHtml","lazyHydrate","toggleIsLoaded","_setupIntersectionObserver","useCache","intersectionObserver","createIntersectionObserver","onStartLoad","wasCached","hasChanged","ssrElement","complete","Type","wStyle","wClass","wrapperProps","sizer","suppressHydrationWarning","GatsbyImage","propsKey","checkDimensionProps","validLayouts","StaticImage","GatsbyImageBrowser","imageData","__imageData","__error","LaterHydrator","wrapRootElement","replaceHydrateFunction","_reactDom","_component","useHydrate","hydrate","pluginOptions","localize","manifestFilename","getManifestForPathname","manifestEl","_gatsby","localizedManifests","shouldPrependPathPrefix","defaultFilename","localizedManifest","app","startUrl","start_url","GatsbyMDXScopeContext","useMDXScope","scope","contextScope","MDXScopeProvider","__mdxScope","scope_0","componentsAndGuards","mdxPlugins","guards","guard","componentFromGuards","MDXConsumer","componentsFromContext","scopeContexts","mdx","mdxScope","End","fullScope","small","btnClass","textStyles","LocalImage","allFile","edges","edge","relativeSource","file","relativePath","extension","G","alternativeText","flagName","isExternalLink","PrefetchContext","prefetchBehaviour","prefetchBehaviourCtx","targetUrl","navigateToTarget","isActive","pageOrCategory","decorateCategory","allCategories","allPages","strapi_children","hasActivePage","propagateActiveState","rootId","allStrapiCategory","allStrapiPage","categories","LocaleContext","LocaleProvider","setColorSchema","handlePreferredColorScheme","_possibleConstructorReturn","_inherits","createNamedContext","Ctx","LocationContext","LocationProvider","getContext","unlisten","_props$history","componentDidCatch","isRedirect","_navigate","unmounted","ServerLocation","baseContext","locationContext","RouterImpl","_React$PureComponent","_navigate2","primary","_props$component","domProps","createRoute","FocusWrapper","FocusHandler","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","shouldFocus","focus","myURIChanged","navigatedUpToMe","activeElement","_props2$component","Comp","outline","tabIndex","_props$getProps","anchorProps","encodedHref","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","Match","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","argIndex","iteratee","getRawTag","objectToString","symToStringTag","toStringTag","arrayMap","symbolProto","symbolToString","baseToString","baseSlice","castSlice","hasUnicode","stringToArray","methodName","strSymbols","trailing","freeGlobal","objectProto","nativeObjectToString","isOwn","unmasked","reHasUnicode","freeSelf","asciiToArray","unicodeToArray","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","baseGetTag","isObjectLike","createCaseFirst","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","awrap","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","_assertThisInitialized","_getPrototypeOf","_inheritsLoose","_objectDestructuringEmpty"],"sourceRoot":""}